您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使React useEffect挂钩不在初始渲染上运行

使React useEffect挂钩不在初始渲染上运行

我们可以使用该useRef钩子来存储我们喜欢的任何可变值,因此我们可以使用它来跟踪useEffect函数是否是第一次运行。

如果我们希望效果在与该效果相同的阶段中运行componentDidUpdate,则可以使用useLayoutEffect

const { useState, useRef, useLayoutEffect } = React;



function ComponentDidUpdateFunction() {

  const [count, setCount] = useState(0);



  const firstUpdate = useRef(true);

  useLayoutEffect(() => {

    if (firstUpdate.current) {

      firstUpdate.current = false;

      return;

    }



    console.log("componentDidUpdateFunction");

  });



  return (

    <div>

      <p>componentDidUpdateFunction: {count} times</p>

      <button

        onClick={() => {

          setCount(count + 1);

        }}

      >

        Click Me

      </button>

    </div>

  );

}



ReactDOM.render(

  <ComponentDidUpdateFunction />,

  document.getElementById("app")

);


<script src="https://unpkg.com/react@16.7.0-alpha.0/umd/react.development.js"></script>

<script src="https://unpkg.com/react-dom@16.7.0-alpha.0/umd/react-dom.development.js"></script>



<div id="app"></div>
其他 2022/1/1 18:24:03 有628人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶