gpt4 book ai didi

reactjs - 使用状态 setter 作为带有反应钩子(Hook)的 Prop

转载 作者:行者123 更新时间:2023-12-03 14:48:32 25 4
gpt4 key购买 nike

我试图了解从 useState 传递 setter 是否存在问题。

在此示例中,我的子组件同时接收状态和 setter 来更改它。

export const Search = () => {
const [keywords, setKeywords] = useState('');

return (
<Fragment>
<KeywordFilter
keywords={keywords}
setKeywords={setKeywords}
/>
</Fragment>
);
};

然后在 child 身上我有类似的东西:
export const KeywordFilter: ({ keywords, setKeywords }) => {

const handleSearch = (newKeywords) => {
setKeywords(newKeywords)
};

return (
<div>
<span>{keywords}</span>
<input value={keywords} onChange={handleSearch} />
</div>
);
};

我的问题是,我应该在父级上有一个回调函数来 setKeywords 还是可以通过 setKeywords 并从子级调用它?

最佳答案

不需要创建一个附加函数来将值转发到 setKeywords,除非您想事先对这些值做一些事情。例如,也许您偏执于子组件可能会向您发送错误数据,您可以这样做:

const [keywords, setKeywords] = useState('');

const gatedSetKeywords = useCallback((value) => {
if (typeof value !== 'string') {
console.error('Alex, you wrote another bug!');
return;
}
setKeywords(value);
}, []);

// ...

<KeywordFilter
keywords={keywords}
setKeywords={gatedSetKeywords}
/>

但大多数时候你不需要做这样的事情,所以传递 setKeywords 本身就可以了。

关于reactjs - 使用状态 setter 作为带有反应钩子(Hook)的 Prop ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58084778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com