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。