mobx基本概念

mobx是一个简单可扩展的状态管理库,主要用来管理状态之间的依赖关系,可以使用在任何状态管理的场景,并不仅限于react。

结合mobx-react可以用在react中,结合mobx-vue可以用在vue中。mobx的概念与knockout和rxjs中的概念极其相似,

相当于将kouckout中的状态管理部分独立出来了。

mobx的基本流程如下图:

1. mobx的基本概念

state 应用的数据,包括领域状态和视图状态

observable 可观察者,可以被观察者观察的数据

observer 观察者,可以观察可观察者的对象,可以接收到可观察者发生变化时候发出的消息,并且根据变化做出响应

observer本身是一个函数,也可以以装饰器的身份出现,将其包装过的对象变成一个观察者

derivations 衍生,状态变化引起的副作用,如一个值的变化或者触发一个行为

computed 衍生值,状态发生变化,引起依赖于原始状态的计算状态发生变化,本质是一个函数,关注其返回值,computed中不能再次修改状态

reactions 衍生行为,状态发生变化,引发某些行为,如IO操作,日志记录等,本质是一个函数调用

action 修改状态的函数,本质是一个高阶函数,修改状态可以是不经过action的,但是mobx建议所有状态的修改尽量在action中,在严格模式下,mobx限制只能在action中修改状态

2. reactions的几种类型

autorun: 本质是一个高阶函数,autorun如其名,首次观察状态立即被触发一次,状态变化会再次被触发

autorunAsync: 可以在状态发生改变一定时间后触发,有函数防抖的功能,其他与autorun一致

when: 可以设置断言,当断言生效时候函数被触发,并且仅仅触发一次

reaction: 与autorun类似,函数不会立即执行

3. mobx的最佳实践

1.reactions一定要命名,不要使用匿名的,有利于在报错时候显示准确的信息

2.状态修改一定要做action中来做,利于追踪状态变化

3.开启严格模式,规范写法

4.使用装饰器写法,简洁明了

5.使用多个store

使用多个 store对观测数据进行逻辑分组。

一个用于 UI 状态

一个或多个用于领域状态

参考:https://segmentfault.com/a/1190000015408976

原文地址:https://www.cnblogs.com/mengff/p/9501481.html

时间: 2024-11-09 10:30:51

mobx基本概念的相关文章

mobx

原文地址:https://mobxjs.github.io/mobx/getting-started.html 写在前面:本人英语水平有限,主要是写给自己看的,若有哪位同学看到了有问题的地方,请为我指出,非常感谢: mobx是一个比redux更好的状态管理包,代码量更少,思路更清晰,没有像redux那样复杂的reducer,action (ps: redux的作者也推荐mobx,某大大告诉我的,并没有原话链接) 1.mobx 反应流程 2.the core idea State 是每一个应用程序

MobX基础理解

一.介绍 MobX一个状态管理工具,由redux作者亲荐.相比redux来说,更简单,更灵活. 二.核心概念 1.State 状态 state即数据,包括从服务端获取的数据,本地控制组件状态的数据 2.Derivations 派生 任何无需进一步交互的,由state演变而来的都称之为派生(好难翻译).派生有很多存在形式: 用户接口 派生数据,例如一个列表的length 后端集成例如向服务端发送请求 MobX有两种类型的派生: 计算属性.基于state计算出的一些属性.例如一个任务列表的lengt

Mobx | 强大的状态管理工具 | 可以用Mobx来替代掉redux

来源简书 电梯直达 https://www.jianshu.com/p/505d9d9fe36a Mobx是一个功能强大,上手非常容易的状态管理工具.就连redux的作者也曾经向大家推荐过它,在不少情况下你的确可以使用Mobx来替代掉redux. 本教程旨在介绍其用法及概念,并重点介绍其与React的搭配使用. 先来看看最基本的用法. observable和autorun import { observable, autorun } from 'mobx'; const value = obse

Mobx总结以及mobx和redux区别

Mobx解决的问题 传统react使用的数据管理库为Redux.Redux要解决的问题是统一数据流,数据流完全可控并可追踪.要实现该目标,便需要进行相关的约束 Redux由此引出dispatch action reducer等概念,对state的概念进行强约束,然而对于一些项目来说,太过强,便失去了灵活性.Mobx便是填补此空缺的 这里对Redux和Mobx进行简单的对比: 1.Redux的编程范式是函数式的而Mox是面向对象的: 2.因此数据上来说Redux理想的是immutable,每次都返

WPF 依赖属性概念

理解依赖属性 在 WPF 中变成相比较于 传统 Windows Forms 变成发生了较大的改变. 属性现在以一组服务的形式提供给开发人员. 这组服务就叫做属性系统. 由 WPF 属性系统所支持的属性成为依赖属性. 依赖属性的概念 WPF 在依赖属性中提供了标准属性无法提供的功能, 特性如下: 决定属性值: 依赖属性的属性值可以在运行时有其他元素或者是其他信息所决定, 决定的过程具有一个优先次序. 自动验证或变更通知: 依赖属性哟一个自定的回调方法, 当属性值变更时被执行, 这个回调能验证新的值

Docker的概念及剖析原理和特点

一.docker的简介: 应用容器是个啥样子呢,一个做好的应用容器长的就像一个装好了一组特定应用的虚拟机一样,比如我现在想用mysql数据库,我直接找个装好了的MySQL的容器就可以了,想用的时候一运行容器,MySQL服务就起来了,就可以使用MySQL了 为什么不能直接安装一个MySQL?或者是SqlServer呢也可以啊? 答:因为有的时候根据每个人的电脑的不同,在物理机安装的时候会出现各种各样的错误,突然你的机器中病毒了或者是挂了,你所有的服务都需要重新安装. 注意:    但是有了dock

老男孩教育每日一题-2017年5月11-基础知识点: linux系统中监听端口概念是什么?

1.题目 老男孩教育每日一题-2017年5月11-基础知识点:linux系统中监听端口概念是什么? 2.参考答案 监听端口的概念涉及到网络概念与TCP状态集转化概念,可能比较复杂不便理解,可以按照下图简单进行理解? 将整个服务器操作系统比喻作为一个别墅 服务器上的每一个网卡比作是别墅中每间房间 服务器网卡上配置的IP地址比喻作为房间中每个人 而房间里面人的耳朵就好比是监听的端口 当默认采用监听0.0.0.0地址时,表示房间中的每个人都竖起耳朵等待别墅外面的人呼唤当别墅外面的用户向房间1的人呼喊时

Tensorflow一些常用基本概念与函数(四)

摘要:本系列主要对tf的一些常用概念与方法进行描述.本文主要针对tensorflow的模型训练Training与测试Testing等相关函数进行讲解.为'Tensorflow一些常用基本概念与函数'系列之四. 1.序言 本文所讲的内容主要为以下列表中相关函数.函数training()通过梯度下降法为最小化损失函数增加了相关的优化操作,在训练过程中,先实例化一个优化函数,比如 tf.train.GradientDescentOptimizer,并基于一定的学习率进行梯度优化训练: optimize

Tensorflow一些常用基本概念与函数(三)

摘要:本系列主要对tf的一些常用概念与方法进行描述.本文主要针对tensorflow的数据IO.图的运行等相关函数进行讲解.为'Tensorflow一些常用基本概念与函数'系列之三. 1.序言 本文所讲的内容主要为以下相关函数: 操作组 操作 Data IO (Python functions) TFRecordWrite,rtf_record_iterator Running Graphs Session management,Error classes 2.tf函数 2.1 数据IO {Da