我什么时候应该在 mobx-react 中使用观察者?

When should I use observer in mobx-react?

我正在使用 mobx-react

将我的所有 class 组件迁移到功能组件

我想知道我的所有组件是否应该用 observer 包裹。

我猜可能有三种情况。

  1. 正在调用和使用可观察状态。
  2. 可观察状态已传递到 props
  3. 纯无状态组件。

假设以上三个组件都是功能组件。

我应该用 observer 的 mobx-react 包装上面的所有组件吗?

cf) 是否有任何文章或基准测试与 @observer mobx 装饰器进行比较?

基本上就是这个https://mobx.js.org/refguide/observer-component.html#when-to-apply-observer and https://mobx.js.org/best/pitfalls.html#use-observer-on-all-components-that-render-observable-s

您通常将所有内容都包装在 observer 中,例外情况可能是仅呈现图元或类似内容的组件,但跟踪它很乏味,因此通常您只包装所有这些组件。

Mobx 的指导方针是将它放在任何读取可观察数据的组件上: https://mobx.js.org/react-integration.html#always-read-observables-inside-observer-components

如果我正确理解了问题,正确的答案在文档 Mobx 站点上: You might be wondering, when do I apply observer?

您可能想知道,我什么时候申请观察员?经验法则是:将观察者应用于所有读取可观察数据的组件。 observer只会增强你正在装饰的组件,不会增强它调用的组件。所以通常你所有的组件都应该被观察者包装。 别担心,这不是低效的。相反,更多的观察者组件使渲染更高效,因为更新变得更多 fine-grained.

p.s.: 第一个回复中有失效的链接,