首页 > 解决方案 > 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>}
         }
}

我已经定义了一个可选的 prop 'optionalClickFn',因此我在执行函数之前首先检查它是否存在。但是,我仍然收到错误:无法调用可能是“未定义”的对象。

标签: javascriptreactjstypescript

解决方案


我找到了解决方案。以这种方式进行检查是行不通的。如果我在 onClick 道具中放置另一个 if 条件,它会按预期工作。

  {props.optionalClickFn ? (
    <div
      className="delete-btn"
      onClick={() => {
        if (props.optionalClickFn) {
          return props.optionalClickFn();
        }
      }}
    >
      <FontAwesomeIcon icon={faTimesCircle} color="red" />
    </div>
  ) : <div></div>}

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


推荐阅读