为什么create-react-app初始化两次?

奇迹

我已经使用初始化了一个react应用程序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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么UIViewController子类的Swift默认初始化程序会两次初始化属性?

来自分类Dev

为什么将Spring bean初始化两次

来自分类Dev

为什么我的angular2应用初始化两次?

来自分类Dev

为什么将Spring bean初始化两次

来自分类Dev

为什么引导工具提示没有初始化两次?

来自分类Dev

为什么在初始加载之前将react渲染渲染两次?

来自分类Dev

为什么我的React组件在初始加载时渲染两次?

来自分类Dev

两次初始化哈希与清除之间有什么区别?

来自分类Dev

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

来自分类Dev

React默认的create-react-app App组件呈现两次

来自分类Dev

为什么我的简单React组件打印控制台两次?

来自分类Dev

为什么在声明状态后我的React渲染两次?

来自分类Dev

为什么console.log在react js中记录两次?

来自分类Dev

为什么使用组件策略时react中的render函数会被调用两次?

来自分类Dev

为什么一个简单的React Component渲染两次?

来自分类Dev

为什么全局变量在React中执行两次

来自分类Dev

为什么React组件在用Observer()包装时会呈现两次渲染?

来自分类Dev

为什么我的组件在react.js 16.x中渲染两次?

来自分类Dev

两次初始化之间有什么区别:Object x = new String(); 字符串x =新的String();

来自分类Dev

Javascript:什么是eslintcache文件以及为什么总是在create react app中生成

来自分类Dev

为什么我无法在系统中安装React并卸载create-react-app?

来自分类Dev

为什么 React Router 会破坏 create-react-app 测试?如何解决这个问题?

来自分类Dev

setOnclickListner初始化两次?

来自分类Dev

为什么firebaseApp已在Android的React Native中初始化?

来自分类Dev

为什么 React Component 函数构造函数中的方法在组件初始化后进行评估?

来自分类Dev

React 初始化时未定义道具。为什么?

来自分类Dev

为什么在使用npm-run-all的Create React App中使用Tailwind会导致初始白屏?

来自分类Dev

为什么create-react-app别名无法从文件夹中找到index.js?

来自分类Dev

为什么在ZEIT Now上托管的Create React App无法显示404响应?

Related 相关文章

  1. 1

    为什么UIViewController子类的Swift默认初始化程序会两次初始化属性?

  2. 2

    为什么将Spring bean初始化两次

  3. 3

    为什么我的angular2应用初始化两次?

  4. 4

    为什么将Spring bean初始化两次

  5. 5

    为什么引导工具提示没有初始化两次?

  6. 6

    为什么在初始加载之前将react渲染渲染两次?

  7. 7

    为什么我的React组件在初始加载时渲染两次?

  8. 8

    两次初始化哈希与清除之间有什么区别?

  9. 9

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

  10. 10

    React默认的create-react-app App组件呈现两次

  11. 11

    为什么我的简单React组件打印控制台两次?

  12. 12

    为什么在声明状态后我的React渲染两次?

  13. 13

    为什么console.log在react js中记录两次?

  14. 14

    为什么使用组件策略时react中的render函数会被调用两次?

  15. 15

    为什么一个简单的React Component渲染两次?

  16. 16

    为什么全局变量在React中执行两次

  17. 17

    为什么React组件在用Observer()包装时会呈现两次渲染?

  18. 18

    为什么我的组件在react.js 16.x中渲染两次?

  19. 19

    两次初始化之间有什么区别:Object x = new String(); 字符串x =新的String();

  20. 20

    Javascript:什么是eslintcache文件以及为什么总是在create react app中生成

  21. 21

    为什么我无法在系统中安装React并卸载create-react-app?

  22. 22

    为什么 React Router 会破坏 create-react-app 测试?如何解决这个问题?

  23. 23

    setOnclickListner初始化两次?

  24. 24

    为什么firebaseApp已在Android的React Native中初始化?

  25. 25

    为什么 React Component 函数构造函数中的方法在组件初始化后进行评估?

  26. 26

    React 初始化时未定义道具。为什么?

  27. 27

    为什么在使用npm-run-all的Create React App中使用Tailwind会导致初始白屏?

  28. 28

    为什么create-react-app别名无法从文件夹中找到index.js?

  29. 29

    为什么在ZEIT Now上托管的Create React App无法显示404响应?

热门标签

归档