这篇文章主要用于学习和上手mobx, 主要有如下内容:javascript
Mobx中文文档: suprise.gitbooks.io/mobx-cn/con… Mobx官网: cn.mobx.js.org/ Mobx概念: cn.mobx.js.org/intro/conce…html
mobx经过透明的函数响应式编程(transparently applying functional reactive programming - TFRP)使得状态管理变得简单和可扩展。MobX背后的哲学很简单: 任何源自应用状态的东西都应该自动地得到。
React 和 MobX 是一对强力组合。React 经过提供机制把应用状态转换为可渲染组件树并对其进行渲染。而MobX提供机制来存储和更新应用状态供 React 使用。 java
import { observable } from "mobx";
class Todo {
id = Math.random();
@observable title = "";
@observable finished = false;
}
复制代码
(2)非注解方式 javascript import { decorate, observable } from "mobx"; class Todo { id = Math.random(); title = ""; finished = false; } decorate(Todo, { title: observable, finished: observable })
react
做用: 当相关数据变化后,与其相关的数据值若是使用了@computed
则会自动更新。git
class TodoList {
@observable todos = [];
@computed get unfinishedTodoCount() {
return this.todos.filter(todo => !todo.finished).length;
}
}
复制代码
当todos
数组变化后,unfinishedTodoCount
获得的结果也会自动变化。只有在须要他们的时候,他们才会自动更新。
github
Reactions 和计算值很像,但它不是产生一个新的值,而是会产生一些反作用,reactions 在 响应式编程和命令式编程之间创建沟通的桥梁。 使用autorun、reaction 和 when 函数便可简单的建立自定义 reactions,以知足你的具体场景。 简而言之:状态改变后,触发一些你想触发的动做,好比打印日志等,就叫作Reactions(反应)编程
任何 源自状态而且不会再有任何进一步的相互做用的东西就是衍生。 衍生以多种形式存在:后端
MobX 区分了两种类型的衍生:api
黄金法则: 若是你想建立一个基于当前状态的值时,请使用 computed
数组
动做
改变状态
,而状态
的改变会更新全部受影响的视图
。
衍生
默认都是同步更新
。这意味着例如动做能够在改变状态以后直接能够安全地检查计算值
。计算值
是延迟更新的。任何不在使用状态的计算值将不会更新
,直到须要它进行反作用(I / O)操做时。 若是视图再也不使用,那么它会自动被垃圾回收。估计上面会看的一脸懵逼,看个demo就理解了:Electron-react-mobx
有问题欢迎加群沟通哦: