我试着通过这样的道具
<Mycomp
deleteAcc={handleDelete(accountId)}
/>
到另一个组件。我写的道具像
interface AccProps {
deleteAcc: () => void;
}
并调用类似的函数
deleteAcc()
但我得到了以下错误
Type 'void' is not assignable to type '() => void'
不确定我错过了什么。
当您将handleDelete(accountId)
作为道具传递时,会立即调用函数,其返回值(在本例中为void
(是作为道具传递的值。如果函数必须接受这个特定的参数,则将其作为回调发送:
<Mycomp deleteAcc={() => handleDelete(accountId)} />
由于handleDelete(accountId)
重用void
,因此此回调类型为() => void
,因此适合道具类型。
如果函数不必接受参数,则可以按名称发送:
<Mycomp deleteAcc={handleDelete} />
通常,一个好主意是在组件中创建一个唯一的包装器函数,并按名称发送,例如:
const wrapper = () => {
handleDelete(accountId);
};
<Mycomp deleteAcc={wrapper} />
很可能是因为handleDelete
函数的返回值类型是void
,并且您传递了handleDelete
的返回值。而CCD_ 9需要CCD_。
尝试:
<Mycomp deleteAcc={() => handleDelete(accountId)}/>