如何将useStatesetter和object一起传递给reacttypescript中的子元素



我在将useState setter和object(两者都在一起(传递给子组件时遇到问题。对象是成功传递的,只是像这样传播它{…Object},但传递setter的语法是什么?代码示例:

<div>
{array && array.map((item) => {
return (
<div key={item.id}>
<Component {...item} setMyState={setMyState}/> ///perhaps it's wrong aproach
</div>
);
})}
</div>
///inside child component
interface IProps {
item: Item; /// of type item, that was imported from other file
setMyState: ()=> void;
}
function Component(props:IProps) {
///return some elements
}

这会产生错误

"(property) IProps.setMyState: () => void Type 'Dispatch<SetStateAction<Item[]>>' is not assignable to type '() => void'"

setMyState钩子获取Item类型的整个Item并对其进行过滤,因此我很难正确描述它需要什么类型的数据。整个项目是对象数组

编辑:根据建议,我编辑了这样的代码:

<div>
{array && array.map((item) => {
return (
<div key={item.id}>
<Component item={item} setMyState={setMyState}/>
</div>
);
})}
</div>
///inside child component
interface IProps {
item: Item; /// of type item, that was imported from other file
setMyState: Dispatch<Item[]>;
}
function Component(props:IProps) {
///return some elements
}

现在道具成功通过

正如它错误地说的那样,您可以尝试指定

setMyState: Dispatch<SetStateAction<Item[]>> 

将setMyState类型更改为Dispatch<SetStateAction<项目[]

setMyState: Dispatch<SetStateAction<Item[]

最新更新