用钩子react渲染两次

IT技术 reactjs react-hooks render
2021-05-17 18:31:47

为什么我的组件渲染了两次?

export default function App() {
  console.log("asd");
  const [count, setCount] = useState(0);
  return (
    <div>
      <Title count={count} />
      <button
        onClick={() => {
          setCount(count + 1);
        }}
      />
    </div>
  );
}


//console= "asd" "asd"

它呈现两次,但如果我删除 useState 它不会发生

1个回答

您的应用程序可能由 React.StrictMode 包装。StrictMode 是一种用于突出应用程序中潜在问题的工具。

StrictMode 目前有助于:

识别生命周期不安全的组件

关于旧字符串引用 API 使用的警告

有关已弃用的 findDOMNode 用法的警告

检测意外的副作用

检测遗留上下文 API

严格模式无法自动为您检测副作用,但它可以通过使它们更具确定性来帮助您发现它们。这是通过有意重复调用以下函数来完成的:

类组件构造函数、render 和 shouldComponentUpdate 方法

类组件静态 getDerivedStateFromProps 方法

功能组件主体(您的应用程序是功能组件)

状态更新器函数(setState 的第一个参数)

传递给 useState、useMemo 或 useReducer 的函数

更多详情