看代碼
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環境下不會這樣,所以不用擔心
