got 类型 'void' 不可分配给 react 打字稿中的类型 '() => void'



我试着通过这样的道具

<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)}/>

相关内容

最新更新