繁体   English   中英

是否有可能只对props更改运行useEffect,而不是状态更改?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM