• React 16.13.1开启严格模式会触发两次render


    看代码

    ReactDOM.render(
      <React.StrictMode>
        <App />
      </React.StrictMode>,
      document.getElementById('root')
    );
    

      这时候组件里的render()会执行两次

    import React from 'react';
    export default class About extends React.Component {
      render() {
        console.log('---about-');
        return (
          <div>
            Here is About!
            <div>
              传过来的值:{this.props.match.params.id}
              <br/>
              中文:{this.props.match.params.text}
            </div>
          </div>
        )
      }
    }
    

      

    strict mode的通过两次调用constructor和render函数来更好的检测不符合预期的side effects

    文档中有表明

    Strict mode can’t automatically detect side effects for you, but it can help you spot them by making them a little more deterministic. This is done by intentionally double-invoking the following functions:

    • Class component constructor, render, and shouldComponentUpdate methods
    • Class component static getDerivedStateFromProps method
    • Function component bodies
    • State updater functions (the first argument to setState)
    • Functions passed to useState, useMemo, or useReducer

    下列函数会执行两次

    • 类组件的constructor,render和shouldComponentUpdate方法
    • 类组建的静态方法getDerivedStateFromProps
    • 函数组件方法体
    • 状态更新函数(setState的第一个参数)
    • 传入useState,useMemo或useReducer的函数

    在production环境下不会这样,所以不用担心

  • 相关阅读:
    MVC 中创建自己的异常处理
    ajax 跨域解决方法
    值传递,引用传递
    值类型,引用类型 结合 栈,堆的理解
    SQL中 ALL 和 ANY 区别的
    SQL中的逻辑运算符
    使用函数输出两个数的最大值
    九句话,送给正在奋斗的我们,每天读一遍
    C语言函数调用简简介
    优秀项目经理的七个习惯
  • 原文地址:https://www.cnblogs.com/bobo1/p/12863088.html
Copyright © 2020-2023  润新知