mobx 如何防止重新渲染可观察组件的子组件?



我发现 mobx 可观察组件只会重新渲染它们自己,而不是它们的子组件。这是如何实现的?

来自 MobX 文档:

MobX 对在执行跟踪函数期间读取的任何现有可观察属性做出反应。

通过在组件上使用@observer,MobX 将跟踪并响应该组件的渲染函数中定义的可观察量发生的更改。 如果您希望每个子组件对更改做出反应,则应用@observer包装。


编辑:

通过在组件上使用observer,MobX 将通过告诉组件仅在必要时更新(可观察量更改或浅层道具更改)来覆盖shouldComponentUpdate

来自 MobX@observer文档:

当组件的道具仅发生浅层更改时,观察者还可以防止重新渲染,如果传递到组件中的数据是响应式的,这很有意义。此行为类似于 React PureRender mixin,只是状态更改仍始终被处理。如果组件提供了自己的 shouldComponentUpdate,则该组件优先。有关此 github 问题的解释,请参阅此 github 问题

最新更新