关于React函数式组件渲染时,执行render2次的问题

294 阅读1分钟
// App.tsx

import { useState } from 'react';
import { BrowserRouter, NavLink} from 'react-router-dom';
import './App.css';
import GetRoutes from './router';


function App() {
  const [_number, setNumber] = useState(1);
  const [named, setNamed] = useState(1);


  console.log("apprender", _number)
  
  return (
    <div className="App">
      <BrowserRouter>
        <NavLink to="/use">useIndex</NavLink>
        <br></br>
        <NavLink to="/hooks/react/useState/1">Hooks</NavLink>
        <GetRoutes></GetRoutes>
      </BrowserRouter>
    </div>
  );
}

export default App;

控制台打印情况

image.png

解决方案

  • React.StrictMode模式关掉
// index.tsx

import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';

const root = ReactDOM.createRoot(
  document.getElementById('root') as HTMLElement
);
root.render(
  // <React.StrictMode>
    <App />
    // </React.StrictMode>
);

// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();