【发布时间】:2021-07-15 12:27:37
【问题描述】:
为什么当组件的 prop 或 state 发生变化时,React 会重新渲染组件,即使更改后的 prop 或 state 与返回的 JSX 无关?
我从官方文档中了解到React Reconciliation。它解释了差异机制,而不是当状态对虚拟 DOM 树没有视觉影响时重新渲染组件的需要。
考虑下面给出的琐碎的虚拟代码,其中myState 是App 组件的状态,它与返回的 JSX 无关,但如果myState 得到更新(这发生在buttonClickHandler 内部,React重新渲染 App 组件。
import React, { useState } from "react";
const App = () => {
console.log("[App] rendered");
const [myState, setMyState] = useState(false);
const buttonClickHandler = () => {
console.log("Button clicked!");
setMyState((prevState) => !prevState);
};
return <button onClick={buttonClickHandler}>Click Me</button>;
};
export default App;
【问题讨论】:
标签: reactjs