Cha*_*man 14 javascript reactjs
我这里有这么简单的代码
import React, { useState } from "react";
import "./styles.css";
export default function App() {
const [number, setNumber] = useState(0);
function chaneNumber() {
setNumber(state => state + 1);
}
console.log("here");
return (
<div className="App">
<button onClick={chaneNumber}>Change number</button>
{number}
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
每次单击该按钮时,我都会在控制台中收到 2 个日志,表明该组件呈现两次。我发现一篇帖子说这是关于严格模式的,但我没有启用严格模式。为什么这个组件在每次状态更新时渲染两次?
这是一个可以尝试的代码和框链接。
Shu*_*tri 21
您的 App 组件在React.StrictMode其中呈现导致您的代码在严格模式下运行的原因,在严格模式下控制台显示两次,因为每个功能在开发模式下运行两次
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
rootElement
);
Run Code Online (Sandbox Code Playgroud)
根据反应文档:
严格模式无法自动为您检测副作用,但它可以通过使它们更具确定性来帮助您发现它们。这是通过有意重复调用以下函数来完成的:
- 类组件构造函数、render 和 shouldComponentUpdate 方法
- 类组件静态 getDerivedStateFromProps 方法
- 函数组件体
- 状态更新器函数(setState 的第一个参数)
- 传递给 useState、useMemo 或 useReducer 的函数
| 归档时间: |
|
| 查看次数: |
885 次 |
| 最近记录: |