簡體   English   中英

React Hooks - 太多的重新渲染

[英]React Hooks - Too many re-renders

我對 javascript 和 react 鈎子都很陌生,並且我不斷收到以下代碼的“重新渲染過多”錯誤

const [showReminder, setShowReminder] = useState(
    lastDismissedDate.diff(overrideDate, 'days') >= 0,
  );

  if (latestIndexScore && !hasCompletedIndexRecently(latestIndexScore.date)) {
    setShowReminder(true);
  }

有什么辦法可以將這兩個語句合二為一。 就像是

const [showReminder, setShowReminder] = useState(
    latestIndexScore && !hasCompletedIndexRecently(latestIndexScore.date) || lastDismissedDate.diff(overrideDate, 'days') >= 0,
  );
          if (latestIndexScore && !hasCompletedIndexRecently(latestIndexScore.date)) 
          {
            setShowReminder(true);
          }

在上面的代碼中,條件為真,則 setShowReminder 將運行或將更改其狀態,如果狀態發生變化,它將再次呈現,因此代碼將再次運行(if 語句),然后 setShowReminder 將再次運行,它會發生變化狀態再次......導致太多重新渲染

嘗試使用 useEffect 鈎子並將數組作為第二個參數傳遞給 useEffect 像這樣

            const [showReminder, setShowReminder] = useState(false);

            useEffect(() => {
               setShowReminder(!showReminder);
            }, [toggle]); // Only re-run the effect if toggle changes

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM