我怎么能跳过useEffect杆的第一次.

useEffect(() => {
    const first = // ???
  if (first) {
    // skip
  } else {
    // run main code
  }
}, [id]);

推荐答案

useRef hook can be used to store any mutable value,因此可以存储一个布尔值,指示是否是第一次运行效果.

Example

const { useState, useRef, useEffect } = React;

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

  const isFirstRun = useRef(true);
  useEffect (() => {
    if (isFirstRun.current) {
      isFirstRun.current = false;
      return;
    }

    console.log("Effect was run");
  });

  return (
    <div>
      <p>Clicked {count} times</p>
      <button
        onClick={() => {
          setCount(count + 1);
        }}
      >
        Click Me
      </button>
    </div>
  );
}

ReactDOM.render(
  <MyComponent/>,
  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>

Reactjs相关问答推荐

如何防止使用useCallback和memo重新渲染

无法从正在使用Reaction的Electron 商务store 项目中的购物车中删除项目

ReactJs;Reaction-Hook-Form:仅当 Select 了特定 Select 列表选项时才显示文本输入

Reaction Ploly:如何在多个子情节中共享zoom 状态

Redux Store未触发React组件中的重新呈现

不同步渲染

GitHub页面未正确显示Reaction应用程序网站

如何通过reactjs正确显示记录

为什么React UseEffect挂钩在页面重新加载时运行

在迭代状态时无法读取未定义的属性(读取 map )

使用获取的数据更新状态,但在try console.log 时它给出未定义

如何在 ChartJS 中创建此图表?在 NEXTjs 和 TSX 中

redux 工具包使用中间件构建器函数时,必须返回一个中间件数组

如何在 ChartJS 中操作 Y 轴

调用 Statsig.updateUser 时 UI 不呈现

在 Reactjs 中状态发生变化时渲染一个新组件而不替换旧组件

Cypress - 在继续之前等待下一个按钮重新出现

如何在 react-router-dom v6 中实现监听功能?

无法有条件地更新useEffect中的setState

单击当前子div时如何更改p标签的图像和样式?react