shouldComponentUpdate用例场景

时间:2019-03-26 15:06:19

标签: reactjs

enter image description here

  

最后一个有趣的案例是C8。 React必须渲染这个组件,   但由于它返回的React元素与之前的元素相同   呈现的内容,而不必更新DOM。

因此,这取自官方的react文档。

对于C8,SCU返回true,并且虚拟DOM(上一个和下一个)相等。这怎么可能?

我能想到的唯一情况是将道具传递给C8而不在C8的render方法中使用它们。

有人可以举例说明吗?

1 个答案:

答案 0 :(得分:1)

每次React组件收到新状态或道具时,它都会尝试重新渲染。但是正如您所说,有时某些道具或状态值不会影响呈现的输出。

一个简单的示例是一个包含诸如按钮计数器之类的属性的组件,但从未实际显示该计数器的输出。由于计数器是作为状态值存储的,因此组件每次更新时都将尝试重新呈现,但是dom实际上不需要更新,因为元素相同。

如果在给定相同输入道具的情况下您的组件将始终产生相同的输出,请使用Pure Component,它将执行浅表比较,并且仅在状态或道具将产生输出时才重新呈现。