当前位置: 首页 > news >正文

为什么选择mobx

对于React而言,大家熟能而详的是redux,但我们的项目用的是mobx,接下来就让我给你详细说下它的优势和不足,可以参考。

MobX是什么?

MobX 是一种简单易用的状态管理库,它采用基于观察者的模式,可以说Mox是面向对象的,自动跟踪应用程序中的变化。相比之下,Redux 是一个更复杂的库,它采用基于 Flux 的模式,通过一个单一的 store 来管理整个应用程序的状态。
在 MobX 中,状态是以变量的形式存在的,可以说Mox是面向对象的,这些变量可以被观察者追踪。当状态发生变化时,MobX 会自动更新相关的视图。这使得 MobX 非常适合快速开发,因为它可以减少大量的手动更新代码。此外,MobX 还提供了一些高级功能,如支持并发更新和自动收集 side effects。

Mobx与redux对比

1.Redux的编程范式是函数式的而Mox是面向对象的;

2.因此数据上来说Redux理想的是immutable( immutable对象是不可直接赋值的对象,它可以有效的避免错误赋值的问题),每次都返回一个新的数据,而Mobx从始至终都是一份引用。因此Redux是支持数据回溯的;

3.然而和Redux相比,使用mobx的组件可以做到精准更新,这一点得益于Mobx的observable;对应的Redux是用dispath进行广播,通过Provider和connect来比对前后差别控制更新粒度;Mobx更加精细,MobX背后的哲学很简单:任何源自应用状态的东西都应该自动地获得。

相对于react来说,mobx没有一个全局的状态树,状态分散在各个独立的store中。mobx的工作原理非常简单,使用Object.defineProperty来拦截对数据的访问,一旦值发生变化,将会调用react的render方法来实现重新渲染视图的功能或者触发autorun等。Mobx的核心原理是通过action触发state的变化,进而触发state的衍生对象(computed value & Reactions)

相关文章:

  • vue使用tailwindcss
  • Python | 刷题笔记
  • vue -ant -design 卡片是布局 实现动态计算 当前的 左右间距 实现居中
  • MySQL——覆盖索引
  • 面试经典题:创建三个线程,按顺序依次循环打印hello+i
  • 你觉得学历在贬值吗?
  • 关于ASPICE 4.0评估师资质更新的说明-亚远景科技
  • Java多线程核心工具类
  • 运维开发之Linux机器码
  • 健康中国,福佑全球!第32届广州大健康展将于6月14-16日盛大举办
  • 21、matlab生成脉冲序列:pulstran()函数
  • thinkpad T440p ubuntu-slam软件安装记录
  • 【前端 - Vue】Vuex基础入门,创建仓库的详细步骤
  • 【Ambari】Docker 安装Ambari 大数据单机版本
  • vscode+latex设置跳转快捷键
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • 2017-08-04 前端日报
  • 77. Combinations
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • ES6系列(二)变量的解构赋值
  • gulp 教程
  • input的行数自动增减
  • Java 多线程编程之:notify 和 wait 用法
  • Java程序员幽默爆笑锦集
  • Java基本数据类型之Number
  • Laravel 实践之路: 数据库迁移与数据填充
  • PHP 小技巧
  • Python - 闭包Closure
  • Unix命令
  • Yeoman_Bower_Grunt
  • 初识 beanstalkd
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 老板让我十分钟上手nx-admin
  • 聊聊directory traversal attack
  • 你真的知道 == 和 equals 的区别吗?
  • 通过git安装npm私有模块
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • $$$$GB2312-80区位编码表$$$$
  • $L^p$ 调和函数恒为零
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (java)关于Thread的挂起和恢复
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (七)理解angular中的module和injector,即依赖注入
  • (转)Mysql的优化设置
  • (转)创业家杂志:UCWEB天使第一步
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .libPaths()设置包加载目录
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .net后端程序发布到nignx上,通过nginx访问
  • @entity 不限字节长度的类型_一文读懂Redis常见对象类型的底层数据结构
  • [ 环境搭建篇 ] 安装 java 环境并配置环境变量(附 JDK1.8 安装包)
  • [ 网络基础篇 ] MAP 迈普交换机常用命令详解
  • [ 英语 ] 马斯克抱水槽“入主”推特总部中那句 Let that sink in 到底是什么梗?
  • [BeginCTF]真龙之力