[英]Is it possible to only run useEffect on props change, but not state change?
正如标题所暗示的那样,我试图让一个useEffect只运行在props更改上,但是如果我改变状态则不行(或者特别是当我运行useState时它不应该运行)。
原因是我有用户输入,默认为存储在数据库中的输入,但是在mount上获取,但是如果props改变则CAN会改变。
useEffect(() => {
let userTags = [];
props.question.tagVotes.forEach((tagVote) => {
if (_.includes(tagVote.users, props.user.username)) {
userTags.push(tagVote.tag);
}
});
setChosenTags(userTags);
});
可能吗? 谢谢。
每次作为第二个参数给出的数组中的任何元素发生更改时,作为useEffect
第一个参数给出的函数将运行,因此您可以将props放在此数组中,以便在任何props更改时再次运行它。
例
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]);
// ...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.