TypeScript:无法调用可能是“未定义”的对象

时间:2020-08-19 10:55:47

标签: javascript reactjs typescript

我有一个可重用的组件,它接受可选的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'的对象。

1 个答案:

答案 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>}

我仍然不确定为什么它不能像我在原始问题中那样写。