前言:由于用脚手架创建项目,默认会自动启用严格模式,所以你会发现双调用现象
严格模式(Strict Mode)
StrictMode 是一个用以标记出应用中潜在问题的工具。就像 Fragment ,StrictMode
不会渲染任何真实的UI。它为其后代元素触发额外的检查和警告。
注 意 : 严 格 模 式 检 查 只 在 开 发 模 式 下 运 行 , 不 会 与 生 产 模 式 冲 突 。 \color{#FF3030}{注意: 严格模式检查只在开发模式下运行,不会与生产 模式冲突。} 注意:严格模式检查只在开发模式下运行,不会与生产模式冲突。
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root')
);
上述代码表示会对App组件运行严格模式检查
- Strict Mode 的作用:
- 识别不安全的生命周期
- 关于使用过时字符串 ref API 的警告
- 关于使用废弃的 findDOMNode 方法的警告
- 检测意外的副作用
- 检测过时(遗留)的 context API
因为严格模式不能自动检测到你的副作用, 但它可以帮助你发现它们, 使其更具确定性。这是通过有意地双调用以下方法来完成的,但是你可能不太习惯,那就关了它