mobx-state-tree 和 mobx-keystone 之间的混淆。什么时候使用哪个?

Confusion between mobx-state-tree and mobx-keystone. When to use which?

Both recommended 如果想要一种使用 mobx 进行状态管理的自以为是的方式,请在官方 Mobx 页面中查看。

基于这些(1,2),keystone似乎是state-tree的改进。拥有状态树所拥有的一切+更多。我在任何地方都找不到 state-tree 有而 keystone 没有的东西。

我发现 keystone 远没有 state-tree 成熟。这可能是阻止我选择它的主要观点。 state-tree 相对于 keystone 还有哪些优点?

P.S。它将在 React 应用程序中使用。

首先问问自己是否真的需要这些库,因为仅使用 mobx 和良好的 OOP 模式就可以走得更远。在 official docs 中你有一个商店的例子,它可以自动保存和序列化。

话虽如此,我还是会选择 mobx-keystone。 Typescript 开箱即用,您可以使用 类 来构建您的商店,这是恕我直言,比 MST 商店更容易。加上作者非常敏感,他也是 mobx 库的贡献者。

经过大量测试/阅读源代码/试用测试套件后,我觉得 mobx-keystone 提供了更强大的 Typescript 开发人员体验,并且如果您需要使用性能敏感代码,它也有足够的逃生通道。我会用这两个库实现一个小问题(但足够复杂)来自己判断。

mobx-keystone 超级棒。在使用这两个库一段时间后,我建议在任何可能的场合都使用它超过 mobx-state-tree。它更直观,更容易学习。它为我的项目节省了很多时间(从 zustand 切换到 jotai 再到 mobx-keystone,IMO 在我的用例中每个下一个都比上一个好一点)

我是 MobX-State-Tree 的当前维护者。我认为 MST 相对于 MobX-Keystone 的主要好处是 MST 使用更广泛并且拥有更广泛的第三方支持。例如,mobx-devtools 支持 MST 但不支持 MobX-Keystone,Reactotron.

综上所述,我对探索 MobX-Keystone 以供我的咨询公司自己使用非常感兴趣。尽管我在维护 MST,但我并不反对 MobX-Keystone,much 更好的 TypeScript 支持非常诱人。如果我们最终在项目中使用它并且进展顺利,我们可能会为其构建对 Reactotron 的支持。

希望这个观点对您有所帮助。

(关于另一个问你是否真的需要 MobX 之外的答案,我认为 MST 和 MobX-Keystone 带来了超级有用的模式和工具,可以帮助你以更有凝聚力的方式扩展整个应用程序而不是自己使用 MobX 重新制作它们。)