正如标题所暗示的那样,我试图使使用效率仅在道具上运行,但如果我更改状态(或者特别是在运行Usestate时它不应运行)。<<<<<<<<<<<<<<<<<</p>
这样做的原因是我有用户输入,默认为存储在数据库中的输入,但在MOUNT上获取,但是如果Props更改,则可以更改。
useEffect(() => {
let userTags = [];
props.question.tagVotes.forEach((tagVote) => {
if (_.includes(tagVote.users, props.user.username)) {
userTags.push(tagVote.tag);
}
});
setChosenTags(userTags);
});
有可能吗?谢谢。
给出的第一个参数 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]);
// ...
}