簡體   English   中英

為什么 create-react-app 初始化兩次?

[英]Why does create-react-app initialize twice?

我已經使用npx create-react-app初始化了一個反應應用npx create-react-app

import React from 'react';

class Expensive {
  constructor() {
    console.log('constructing expensive class');
  }
}

function App() {
  const expensiveRef = React.useRef(new Expensive());
  return (
    <div className="App">
      app
    </div>
  );
}

export default App;

但是,我看到constructing expensive class被打印到控制台兩次。 為什么是這樣?

如果我更換,我會得到相同的結果

const expensiveRef = React.useRef(new Expensive());

const [expensiveState, setExpensiveState] = React.useState(new Expensive());

每個代碼都會在每次渲染時執行,這就是為什么它會被多次記錄,甚至 useState 也會記住第一個實例。

如果您希望它只初始化一次,請使用像這樣的 useState 版本

const [expensiveState, setExpensiveState] = React.useState(() => new Expensive());

所以你傳遞函數而不是對象初始化

https://reactjs.org/docs/hooks-reference.html#lazy-initial-state

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM