簡體   English   中英

如何在重新渲染和依賴項更改時運行單個 useEffect?

[英]How to run a single useEffect both on re-render and on dependency change?

我有以下代碼,

 const [over, setOver] = useState(false); useEffect(() => { //some logic }, [over]);

並且我希望能夠在 (over) 被更改時運行使用效果,並且如果組件道具現在更改,代碼僅在 over 被更改時運行,類似於

 useEffect(() => { //some logic }, []);

您的第一個代碼和第二個代碼根本不相似。 第二個僅在安裝組件(添加到 DOM)時運行一次。 第一個代碼將運行onComponentMountonOverChange

您需要了解 React 組件生命周期才能了解useEffect 的工作原理。

有 3 個生命周期事件。 onMountonStateChangeonUnMount 回調 function 在onMountonStateChange被觸發時運行。 當您使用[]時,這意味着代碼只會在掛載時運行,而不是在任何 stateChange 事件上運行。 (因為沒有任何 state 可供觀看)

useEffect(() => {
  // this will run when component is added to the DOM or a dependency state have changed
  console.log("mounted or dependency state changed");
  
  // this will run when component is destroyed
  return () => console.log("component unmounted");
  
}, [dependency1, dependency2]);

一種直接的方法是在依賴數組中添加道具

  useEffect(() => {
     //some logic
  }, [over,props]);

但這並不是一個好主意

Go 通過這一次你可能不需要效果

暫無
暫無

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

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