便于提示我们我们开发的代码的问题

严格模式

StrictMode(React.StrictMode),本质是一个组件,该组件不进行UI渲染(它也不进行渲染:React.Fragment—<> </>,但节点都是存在的!),它的作用是:在渲染内部组件时,发现不合适的代码

  • 识别不安全的生命周期
  • 关于使用过时字符串 ref API的警告
  • 关于使用废弃的 findDOMNode 方法的警告。因为ref就可以更好地解决
  • 检测意外的副作用
    • React要求,副作用代码仅能出现在以下生命周期函数中
      • componentDidMount
      • componentDidUpdate
      • componentWillUnmount
    • 副作用:一个函数中,做了一些会影响外部数据的事情,例如:
      • 异步处理(ajax请求、定时器等)
      • 改变参数值
      • setState
      • 本地存储
      • 改变函数外部的变量,比如利用闭包等
    • 相反的,如果一个函数没有副作用,则可以认为该函数是一个纯函数
    • 在严格模式下,虽不能监控到具体的副作用代码,但它会将不能具有副作用的函数调用两次!以便开发者发现问题。(这种模式,仅在开发阶段有效,发布阶段不会影响)
  • 检测过时的context API

    Profiler

    性能分析工具。它可以分析某一次或多次提交(更新),涉及到的组件的渲染时间
    可以通过比较dom结构复杂时 给key和不给key 的分别的渲染时间
    image.png
    火焰图:得到某一次提交,每个组件总的渲染时间以及自身的渲染时间
    排序图:得到某一次提交,每个组件自身渲染时间的排序
    组件图:某一个组件,在多次提交中,自身渲染花费的时间
    交互图:与页面交互时,记录交互的是什么操作,然后。。。