返回

MobX背后的基础原理揭秘,原来是这些核心概念在起作用

前端

近一段时间,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是一个不错的选择。