我有一个可重用的组件,它接受可选的onClick回调函数作为道具。
我已将Props接口定义为以下对象:
interface Props {
prop1: string;
prop2: string;
optionalClickFn?: () => void;
}
功能性React(JSX)组件如下:
const ExampleComponent = (props: Props) => {
return{
{ props.optionalClickFn ? <div
className="delete-btn"
onClick={() => props.optionalClickFn()}
>
<FontAwesomeIcon icon={faTimesCircle} color="red" />
</div> : <div></div>}
}
}
我已经定义了一个可选道具'optionalClickFn',因此在执行该功能之前,我首先要检查它是否存在。但是,我仍然收到错误:无法调用可能是'undefined'的对象。
答案 0 :(得分:0)
我找到了解决方案。以这种方式进行检查无法正常工作。如果我在onClick道具中放置另一个if条件,它将按预期工作。
{props.optionalClickFn ? (
<div
className="delete-btn"
onClick={() => {
if (props.optionalClickFn) {
return props.optionalClickFn();
}
}}
>
<FontAwesomeIcon icon={faTimesCircle} color="red" />
</div>
) : <div></div>}
我仍然不确定为什么它不能像我在原始问题中那样写。