【发布时间】:2017-08-15 12:59:20
【问题描述】:
丹·阿布拉莫夫says
...如果在给定相同的 props 和 state 的情况下保证返回相同的结果,则组件是纯的。
因此,如果为组件提供了相同的 props,则始终会返回相同的输出。这很清楚。
然后他说
纯组件...不要依赖于 props 或 状态,因此它们的渲染性能可以通过浅层来优化 比较他们的
shouldComponentUpdate()钩子
但这意味着我可以为纯组件提供相同的 props 对象,但在所述 props 对象内部更深的地方有所不同,并且该组件将呈现相同但用于不同(尽管有很大差异)的 props。这意味着不强制执行此约束。
将组件声明为 extends PureComponent 真的是在对 ReactJS 说“我知道我在做什么。我保证我使用的是不可变状态。所以你只需要在 shouldComponentUpdate 中执行浅道具比较”?
最后,PureComponents 默认提供了一个浅的shouldComponentUpdate 方法——大概可以用任何你想要的方法覆盖它(甚至是深度比较)?
【问题讨论】:
标签: javascript reactjs