【发布时间】:2017-05-31 13:35:37
【问题描述】:
似乎 React 组件总是在其父组件渲染时运行其 render 方法,即使子组件没有更改状态或道具,即使子组件没有状态或道具。
这是应该的吗?这有没有效率低下?将子组件切换为 PureComponent 可以解决此问题,并且子组件不会重新渲染。我应该更喜欢 PureComponents 而不是常规组件吗?
【问题讨论】:
-
PureComponents 更容易出错。 React 文档的一般建议是在任何地方都使用 Component,并且仅在解决实际性能问题并且仅在其使用实际提高性能时才使用 PureComponent。我现在找不到源链接。
-
来自 PureComponent 文档:“如果你的 React 组件的 render() 函数在给定相同的 props 和 state 的情况下呈现相同的结果,那么在某些情况下你可以使用 React.PureComponent 来提高性能。” “如果”对我来说很有趣......渲染功能是否应该在一切都相同时运行?或者在使用常规组件时,不应该重新渲染没有状态或道具的哑组件。常规组件如何决定何时渲染?
-
父组件中的任何更改都会先渲染子组件,然后再渲染父组件。如果您认为父组件状态或道具不应该影响子组件,请使用 shouldComponentUpdate 函数。如果您不需要组件的本地状态,则纯组件很有用。
标签: performance reactjs render