顾名思义,我试图使useEffect仅在道具更改时运行,而不是在更改状态时运行(或者特别是在运行useState时不应运行)。
这样做的原因是,我有用户输入,默认为存储在数据库中的输入,但是在安装时获取,但是如果props更改,CAN可以更改。
useEffect(() => {
let userTags = [];
props.question.tagVotes.forEach((tagVote) => {
if (_.includes(tagVote.users, props.user.username)) {
userTags.push(tagVote.tag);
}
});
setChosenTags(userTags);
});
Run Code Online (Sandbox Code Playgroud)
可能吗?谢谢。
useEffect每当作为第二个参数给定的数组中的任何元素发生变化时,作为第一个参数给定的函数都会运行,因此您可以将道具放置在此数组中,以使其在任何道具更改时再次运行。
例
function App(props) {
useEffect(() => {
let userTags = [];
props.question.tagVotes.forEach(tagVote => {
if (_.includes(tagVote.users, props.user.username)) {
userTags.push(tagVote.tag);
}
});
setChosenTags(userTags);
}, [props.question]);
// ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
810 次 |
| 最近记录: |