【问题标题】:Does React re-render the entire top-level component or just the individual components within which change?React 是重新渲染整个顶级组件还是仅重新渲染发生变化的单个组件?
【发布时间】:2026-02-01 12:35:01
【问题描述】:

我想知道效率方面,如果我在一个文件中只有这一行,由 create-react-app 设置,

ReactDOM.render(<App />, document.getElementById('root'));

另一个名为 App 的文件中的一个类包含对许多其他类的调用,并且可能对其他文件中的类进行调用,这些子类中的一个小变化需要重新呈现整个 App 类,或者只是需要更改的单个类或多个类。我希望这有点道理。谢谢!

【问题讨论】:

  • 通常,它会重新渲染您调用 this.setState 的组件,以及该组件的后代。如果您想避免后代重新渲染,可以通过编写 shouldComponentUpdate 函数来实现

标签: javascript reactjs dom create-react-app


【解决方案1】:

如果shouldComponentUpdate 返回true,通常会重新渲染树。这意味着经典的反应组件class Component1 extends React.Component,每次都重新渲染。如果您希望子组件仅在其属性发生更改时重新渲染,您应该使用 React.PureComponent 提供 shouldComponentUpdate 进行属性的浅层比较。

【讨论】:

  • 在我看来这真的很愚蠢,因为如果只有真正了解 DOM 的人才能发现加速/效率,那么它就会破坏 React 对编程新手友好的原因向前。 React 只是因为大多数人甚至没有利用的功能而被美化了吗?