美文网首页
mobx与Redux的区别

mobx与Redux的区别

作者: 月半女那 | 来源:发表于2022-12-12 23:55 被阅读0次

1. 状态容器

  1. redux :
    dispatch(action) - > 在store中调用reducer,将当前state和收到的action做对比,计算出新的state -> state发生变化,store监听到变化 -> 出发重新渲染
  2. mobx
    action -> 修改state -> 触发变化

2. 设计思想

  1. redux遵循的是函数式编程思想,而mobx则更多的从面向对象角度考虑问题
  2. redux提倡编写函数式的代码,例如reducer就是一个纯函数,接受输入,输出结果,对于相同的输入总是输出相同的结果,mobx设计更多的式偏向面向对象编程和响应式编程,通常将状态包装成可观察的对象,于是我们就可以使用可观察对象的所有能力,一旦状态变化,就能自动获取更新

3. store

store式应用管理数据的地方,在redux中,会将所有数据集中在一个大的store中,而mobx则是按模块应用划分,在多个独立的store中

4. mobx-react , react-redux

- react和redux应用连接时,需要使用react-redux提供的provider和connect

  1. provider:将store注入应用
  2. connect:负责将store state 注入容器组件,并选择特定状态作为容器组件props传递
    - 对于Mobx而言,同样需要两个步骤:
    1、Provider:使用mobx-react提供的Provider将所有stores注入应用
    2、使用inject将特定store注入某组件,store可以传递状态或action;然后使用observer保证组件能响应store中的可观察对象(observable)变更,即store更新,组件试图响应式更新
  • mobx补充:
    MobX 提供了优化应用状态与 React 组件同步的机制,这种机制就是使用响应式虚拟依赖状态图表,它只有在真正需要的时候才更新并且永远保持是最新的。
    MobX 会对在追踪函数执行过程中读取现存的可观察属性做出反应。
    MobX5 使用proxy来追踪属性
    mobx概念
  1. 状态(state):state是驱动应用的数据
  2. 衍生(Derivations):两种类型 computed values / reactions(反应)
  3. actions
    mobx支持单项数据流
    MobX 中实现数据绑定的原理主要是通过 Object.defineProperty ,在对状态进行读写操作的时候会触发其 gettersetter 函数以进行响应,而这一点和 Vue 的原理其实是非常类似的。

在初始化或者添加状态时会给目标对象添加一个代理对象,并且重写目标对象中需要观察的属性的 gettersetter 函数,讲其读写操作代理到代理对象之上;

当初始化 autorun 函数时,会首次运行一遍监听函数,以触发状态的 getter 函数,然后收集依赖,将依赖与监听函数进行双向绑定;

在之后修改状态时会触发其 setter 函数,获取 Reactions 并运行其监听函数,同时更新其监听函数的依赖;

因此,MobX 的依赖绑定是实时性的,并且实现了依赖的最小颗粒度。

相关文章

  • mobx和redux

    Mobx总结以及mobx和redux区别https://blog.csdn.net/weixin_44369568...

  • Mobx与Redux区别

    Mobx与Redux区别 Mobx的实现思想和Vue几乎一样,所以其优点跟Vue也差不多:通过监听数据(对象、数组...

  • React Native的数据流控制:Redux和Mobx对比

    React Native的数据流控制 待补充~~ Redux or Mobx Redux和Mobx对比 Redux...

  • mobx和redux的区别

    面试官问到这一道文提示,是想考察我们对两个状态管理的工具的用法是否熟悉,我们可以先从共同点,每一个的具体用法,区别...

  • Mobx 十分钟快速入门

    Store, Redux 和 Mobx 前端数据流方案包括了 flux, redux 和 mobx. 在其中数据存...

  • mobx VS Redux

    mobx api 简单,样板代码少 redux 需要注意的挺多,mobx 需要对依赖收集理解 Redux 规范 s...

  • 使用mobx和mobx-react代替redux和react-r

    用mobx和mobx-react代替redux和react-redux已经时大势所趋,既解决越写越零散的reduc...

  • redux & mobx

    记得我刚开始学习 react 时非常困惑,并不明白为什么要用 mobx ,要用 redux ?react comp...

  • redux mobx

    作者:Wang Namelos 链接:https://www.zhihu.com/question/4131257...

  • 搞定 Mobx 小程序状态管理

    1. 前言 从vuex到 redux ,react-redux , pinia, 最后的Mobx全部都得搞;还好...

网友评论

      本文标题:mobx与Redux的区别

      本文链接:https://www.haomeiwen.com/subject/sumohltx.html