从此处的文档中: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
。