MobX背后的基础原理揭秘,原来是这些核心概念在起作用
2023-11-14 21:09:22
近一段时间,Bertalan Miklos发表了一篇有趣的博文,比较了MobX和基于proxy的NX-framework。
这篇文章不仅证实了proxy的可行性,它还触及到了一些MobX中非常基础但是通常都隐藏起来的概念。
我到目前为止还没对这些概念有过深入的阐述,这也是这篇文章的初衷所在。
可观察对象
可观察对象是MobX中一切的基础。它们是能够追踪其自身状态变化的对象。
当可观察对象发生变化时,它会通知所有订阅它的依赖项,从而触发响应式更新。
在MobX中,所有的状态都应该存储在可观察对象中。
计算属性
计算属性是从一个或多个可观察对象派生的新值。
当这些可观察对象发生变化时,计算属性会自动更新。
这意味着你可以在你的组件中使用计算属性来派生你需要的值,而不用担心手动更新它们。
行动
行动是用来修改可观察对象状态的方法。
在MobX中,所有的状态改变都应该通过行动来完成。
这确保了状态改变是可追踪的,并且不会导致不一致的状态。
反应
反应是在可观察对象发生变化时被调用的函数。
你可以使用反应来更新UI、触发网络请求或执行任何你需要做的操作。
拦截器
拦截器是在可观察对象发生变化之前或之后被调用的函数。
你可以使用拦截器来验证数据、记录状态变化或执行任何你需要做的操作。
MobX是如何工作的
现在我们已经了解了MobX的基本概念,我们来看看它是如何工作的。
当你在你的组件中使用一个可观察对象时,MobX会创建一个跟踪器来追踪该可观察对象。
当该可观察对象发生变化时,跟踪器会通知MobX,MobX会更新所有订阅该可观察对象的计算属性和反应。
这个过程非常高效,因为它只更新那些依赖于发生变化的可观察对象的值。
MobX的优势
MobX是一个非常强大的响应式框架,它具有以下优势:
- 简单易学。 MobX的API非常简单易懂,即使是新手也可以快速上手。
- 高效。 MobX只更新那些依赖于发生变化的可观察对象的值,因此它非常高效。
- 可扩展。 MobX可以很容易地扩展到大型应用程序中,因为它使用了一个模块化设计。
- 可测试。 MobX提供了一个方便的测试API,使你可以很容易地测试你的应用程序。
MobX的缺点
MobX也有以下几个缺点:
- 学习曲线。 MobX的API虽然简单易懂,但它也有一些概念需要一些时间来理解。
- 调试难度。 MobX的调试难度较大,因为它使用了大量的元编程技术。
- 内存消耗。 MobX可能会消耗比其他响应式框架更多的内存,因为MobX需要跟踪所有可观察对象及其依赖项。
结论
MobX是一个非常强大的响应式框架,它具有许多优点。
然而,它也有一些缺点,例如学习曲线和调试难度。
如果你正在寻找一个易于使用、高效、可扩展和可测试的响应式框架,那么MobX是一个不错的选择。