从此处的文档中:http://facebook.github.io/react/docs/pure-render-mixin.html

脚注说,如果更改复杂数据的结构(深层数据结构),则应使用forceUpdate()

从纯的定义:it renders the same result given the same props and state

我越来越多地认为这是一个矛盾,因为如果数据结构发生变化,则意味着您正在赋予新的道具/状态。因此,该组件不再是“纯”的。

我认为,如果您更改传递到组件的道具或状态,则可以:

use forceUpdate().
remove PureRenderMixin from the mixins.


因此,在幕后……您正在将纯组件转换为“非纯”组件。因此,删除PureRenderMixin应该是唯一可用的选项。

我对吗 ?还是Pure组件意味着在提供相同的道具时该组件被“缓存”并重新使用?

抱歉,我有点困惑。

最佳答案

PureRenderMixin用于使React知道不应不必要地调用render方法。例如,如果您的render方法足够复杂,那么如果不使用相同的prop / state重新渲染组件,则可以提高性能。

但是,就像文档中所说的那样,PureRenderMixin不会比较深层嵌套的数据结构,因此它应该在需要的时候不调用render函数,因为某些嵌套结构实际上已更改。

在这些情况下,最好不要使用PureRenderMixin并使用shouldComponentUpdate来执行自己的比较逻辑。

另外,在文档中,您should avoid using forceUpdate

10-02 18:23