Skip to content

StrictMode

StrictMode 是一个用来显示 app 中潜在问题的工具,它不会渲染任何的可见 UI,只会为其后代元素触发额外的检查和警告。并且它仅仅只会在开发模式下运行。

StrictMode 目前有助于:

  • 识别不安全的生命周期
  • 关于使用过时字符串 ref API 的警告
  • 关于使用废弃的 findDOMNode 的警告
  • 检测意外的副作用
  • 检查过时的 context API
  • 确保可复用的状态

检测意外的副作用

严格模式不能自动检查到代码中的副作用,但它可以通过在开发环境“故意”重复调用一下函数来帮助我们发现它们。

  • class 组件的 constructor,render 以及 shouldComponentUpdate 方法
  • class 组件的 getDerivedStateFromProps 方法
  • 状态更新函数(即 setState 的第一个参数)
  • 函数组件体
  • 函数组件的 useState,useMemo,useReducer

确保可复用的 state

为了检测“React 支持使用卸载前已有的组件状态重新挂载到树上”这一特性可能带来的隐患,React 18 为严格模式引入了一个全新的仅用于开发环境的检查操作。每当第一次安装组件时,这个新的检查将自动卸载并重新安装每个组件,并在第二次挂载时恢复之前的 state。