首页 > 解决方案 > 只需添加 useState 钩子语句导致组件重新渲染

问题描述

我创建了一个基本的create-react-app并添加了以下语句

const [stateA, setStateA] = useState(false);

我已经在我的组件中放置了一个 console.log。完整的组件代码是

import React, { useState } from 'react';
import logo from './logo.svg';
import './App.css';

const App = () => {
  const [stateA, setStateA] = useState(false);

  console.log("rendered");
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>
          Edit <code>src/App.js</code> and save to reload.
        </p>
        <a
          className="App-link"
          href="https://reactjs.org"
          target="_blank"
          rel="noopener noreferrer"
        >
          Learn React
        </a>
      </header>
    </div>
  );
}

export default App;

它显示“渲染”两次。任何人都可以说出为什么会这样吗?

标签: reactjs

解决方案


如果您注意到index.jscreate-react-app现在React.StrictMode默认使用)文件,您可能有一个名为的包装器React.StrictMode,它负责这个额外的重新渲染。包装器将调用render,constructor和其他生命周期方法来检测副作用。所以这是意料之中的。

您可以在此处阅读更多信息:https ://reactjs.org/docs/strict-mode.html#detecting-unexpected-side-effects

希望这可以帮助!


推荐阅读