[英]How to re-render and run useEffect when router change (React js)
[英]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)時運行一次。 第一個代碼將運行onComponentMount和onOverChange 。
您需要了解 React 組件生命周期才能了解useEffect 的工作原理。
有 3 個生命周期事件。 onMount 、 onStateChange和onUnMount 。 回調 function 在onMount或onStateChange被觸發時運行。 當您使用[]
時,這意味着代碼只會在掛載時運行,而不是在任何 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]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.