繁体   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