我有以下方法,该方法呈现一个删除图标,并在我的主容器中使用它。一切正常。我唯一遇到的问题是一个小小的装饰性问题,是一个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
有点像拇指疼痛。我根本无法弄清楚。谢谢您的宝贵时间。
答案 0 :(得分:1)
在我看来,上面的代码像一个HOC(高阶组件)https://reactjs.org/docs/higher-order-components.html
我在您的代码中看到您使用DeleteActionRenderer
的方式是不正确的,因为在这种情况下options
对象是props的一部分,因此它将出现在您从中返回的函数中DeleteActionRenderer
,而不是DeleteActionRenderer
本身。
对于您来说,options
的类型为:
type Options = {
onClick: Function
}
希望有帮助。