簡體   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