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