MobX入门

本文尝试解释MobX是如何运作的。我们将用MobX创建一个小案例。如果你正在找靠谱的MobX文档,可以去看官方文档

什么是MobX

官方文档的解释:简洁,易扩展的状态管理。简单来说,MobX可以很好的管理应用程序的状态/数据,同时又简洁,易扩展。先来看一张图:

我们通过上图的的步骤来创建一个简单应用。

State

在MobX中你可以设置一个或者多个state,我们先设置一个:

var store = mobx.observable({
counter: 0
})

我们初始化store,只有一个状态数据counter。你的对象可能有多个层级对应多个不同的属性。

Rendering

MobX.js一起用效果很好,但是不用react.js也可以。我们用原生JavaScript来把状态渲染到页面:

`<div>-</div>`

function render(state) {
document.getElementById('counter').textContent = state.counter;
}

我们拿到了状态并更新到了页面。

Actions

当action发生,我们可以直接改变状态:

<button id="button">Increment</button>

document.getElementById('button').addEventListener('click', function() {
store.counter = store.counter + 1
})

当我们点击按钮,state 中的 counter将会加1。

改变State

当我们改变状态,我们将更新渲染:

mobx.observe(store, function() {
render(store)
})

最终代码

jsfiddle

<!--html-->
<div id="counter">-</div>
<button id="button">Increment</button>
// JavaScript
var store = mobx.observable({
counter: 0
}) function render(state) {
document.getElementById('counter').textContent = state.counter;
} document.getElementById('button').addEventListener('click', function() {
store.counter = store.counter + 1
}) mobx.observe(store, function() {
render(store)
})

与Redux比较

比起Redux,MobX不管是写代码还是理解,似乎都要简单很多,而且你不用写很多重复的代码。但是随之而来的代价就是你不知道它内部是如何运作的。MobX也可以写的和Redux一样:用actions,创建action,创建异步action等等,但是不是强制的。总的来说,如果你保持你的代码模块化,可测试以及数据单向流,MobX是个不错的选择。

本文转载自:众成翻译

译者:miaoYu

链接:http://www.zcfy.cc/article/4730

原文:https://bumbu.github.io/simple-mobx

原文:https://bumbu.github.io/simple-mobx/

MobX入门的更多相关文章

  1. redux和mobx入门使用

    redux和mobx入门使用 项目涉及技术 公共插件 create-react-app react-dom react-router react-router-dom react-hook redux ...

  2. mobx 入门

    observable(可观察的数据) 数组 import { observable, isArrayLike } from 'mobx' const arr = observable(['a', 'b ...

  3. 1-2 Mobx 入门实践之TodoList(官方Demo)

    第一步:导入模块 import React, { Component } from 'react'; import { observable, autorun,computed } from 'mob ...

  4. MobX入门示例

    在相当长的一段时间内,Redux 都是前端开发人员作为状态管理的首先框架,如果不会 Redux,你都不好意思跟别人说自己是搞前端的. 没过多久,开发者们开始意识到,这东西虽说盛行,但它并没有传说中的那 ...

  5. 【MobX】391- MobX 入门教程(下)

    点击上方"前端自习课"关注,学习起来~ 三.MobX 常用 API 介绍 3. 修改可观察数据 在上一部分内容中,我们了解到,对可观察的数据做出反应的时候,需要我们手动修改可观察数 ...

  6. 【MobX】390- MobX 入门教程(上)

    点击上方"前端自习课"关注,学习起来~ 本文考虑到篇幅问题,将<MobX 入门教程>分成上.下两篇文章,方便阅读.分配安排: 一.MobX 介绍 首先看下官网介绍: ★ ...

  7. 【MobX】MobX 简单入门教程

    一.MobX 介绍 首先看下官网介绍: MobX 是一个经过战火洗礼的库,它通过透明的函数响应式编程(transparently applying functional reactive progra ...

  8. MobX+react使用小demo

    第一次接触mobx,网上找了很多例子,写此主要总结一下create-react-app + mobx入门 create-react-app myreact cd myreact npm install ...

  9. Mobx-React : 当前适合React的状态管理工具

    MobX 简单.可扩展的状态管理        MobX 是由 Mendix.Coinbase.Facebook 开源和众多个人赞助商所赞助的.    安装 安装: npm install mobx ...

随机推荐

  1. Content-Encoding值

    Content-Encoding值 gzip 表明实体采用GNU zip编码 compress 表明实体采用Unix的文件压缩程序 deflate 表明实体是用zlib的格式压缩的 identity ...

  2. 修改默认的gitlab clone地址,要不每次都得自己修改

        这个是无法clone的,得换成gitlab的ip地址 下面进行修改     sudo vim /opt/gitlab/embedded/service/gitlab-rails/config/ ...

  3. OSI参考模型(转)

    一.OSI参考模型 自下而上:物理层(物理介质,比特流).数据链路层(网卡.交换机).网络层(IP协议).传输层(TCP/UDP协议).会话层(创建/建立/断开连接).表示层(翻译,编码,压缩,加密) ...

  4. 深度遍历DFS

    目录: https://zhipianxuan.github.io/ 一.树的DFS 二.二维矩阵的DFS 三.图的DFS 一.题目一:二维矩阵(输出所有路径数) 思路:从起点开始,DFS,直到走到终 ...

  5. 洛谷P1579 哥德巴赫猜想(升级版)【水题+素数】

    1742年6月7日哥德巴赫写信给当时的大数学家欧拉,正式提出了以下的猜想:任何一个大于9的奇数都可以表示成3个质数之和.质数是指除了1和本身之外没有其他约数的数,如2和11都是质数,而6不是质数,因为 ...

  6. http://www.phplo.com/special/2013/0616/467.html

    http://www.phplo.com/special/2013/0616/467.html

  7. 单元测试代码:SpringTest+JUnit

    /** * JUnit单元测试父类,配置了Spring的基础环境. <br/> * 可以作为Controller.Service.Dao单元测试的父类. * * @author leiwe ...

  8. spring-boot 访问时,加与不加项目名分析

    众所周知,springboot非常便捷,可以简化项目开启步骤,加快开发进度. 很多新手也许都遇到过这样一个问题,在以往的springMvc项目里,大家伙都是把打的war放在tomcat中运行,下意识的 ...

  9. ro的session

    1.需要session管理器,根据需要选择: 2.需要一个login和logout的服务.注意:设定TRORemobteDataMedule.sessionmanager,但要设定TRORemobte ...

  10. K - Transformation

    K - Transformation HDU - 4578 思路:发现自己的错误竟然是zz般的少了一个取模   ε=ε=ε=(#>д<)ノ #include<cstdio> # ...