React17中StrictMode未触发两次render执行的原因是什么?
问题:StrictMode下点击按钮仅打印一次
render的疑惑 - 实际现象:点击按钮触发状态更新后,控制台仅打印一次
render - 预期结果:按照
StrictMode的特性,应该打印两次render
代码示例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <script src="https://unpkg.com/react@17/umd/react.development.js" crossorigin ></script> <script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js" crossorigin ></script> <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script> <script type="text/babel"> console.log(React.version, ReactDOM.version); class App extends React.Component { state = { count: 0, }; render() { console.log("render"); return ( <div> <button onClick={() => { this.setState({ count: this.state.count + 1, }); }} > click </button> <div>count {this.state.count}</div> </div> ); } } ReactDOM.render( <React.StrictMode> <App /> </React.StrictMode>, document.getElementById("root") ); </script> </head> <body> <div id="root"></div> </body> </html>
补充说明:若切换至React 16版本(引入对应版本的react和react-dom开发库),控制台会打印两次render。
内容的提问来源于stack exchange,提问作者user15163984
相关产品推荐
相关产品推荐

