ReactJS |用于onClick的Typescript类型。 x类型不存在onclick

时间:2019-08-09 07:10:56

标签: javascript reactjs typescript onclick

我有以下方法,该方法呈现一个删除图标,并在我的主容器中使用它。一切正常。我唯一遇到的问题是一个小小的装饰性问题,是一个any类型,我无法弄清楚该类型是什么。

import React from 'react';
import Icon from './Icon';

const DeleteActionRenderer = (options: any): Function => (cell: string, row: string): JSX.Element => {
  const deleteActionClick = options.onClick({ cell, row }); // The error is here. On options.onClick.
  return (
    <div>
      <a href="#" className="text-danger p-1 text-lg" onClick={deleteActionClick}>
        <Icon icon="trash" />
      </a>
    </div>
  );
};

export default DeleteActionRenderer;

如您所见,options具有any作为类型。我不知道有什么选择。除了任何作品。 object, string, number, Function, MouseEvents, SyntheticEvent。甚至没有unknown

唯一有效的类型是any

我console.log(options,typeOf options),它打印出一个对象。见下文:

{onClick: ƒ}
onClick: ƒ (_ref2)
arguments: (...)
caller: (...)
length: 1
name: ""
prototype: {constructor: ƒ}
__proto__: ƒ ()
[[FunctionLocation]]: index.tsx:146
[[Scopes]]: Scopes[5]
__proto__: Object

有什么想法吗? any有点像拇指疼痛。我根本无法弄清楚。谢谢您的宝贵时间。

1 个答案:

答案 0 :(得分:1)

在我看来,上面的代码像一个HOC(高阶组件)https://reactjs.org/docs/higher-order-components.html

我在您的代码中看到您使用DeleteActionRenderer的方式是不正确的,因为在这种情况下options对象是props的一部分,因此它将出现在您从中返回的函数中DeleteActionRenderer,而不是DeleteActionRenderer本身。

对于您来说,options的类型为:

type Options = {
   onClick: Function
}

希望有帮助。