美文网首页
Mobx入门(一)

Mobx入门(一)

作者: 隐号骑士 | 来源:发表于2019-08-20 22:41 被阅读0次

Mobx是什么

MobX实现简单、可扩展的状态管理。

使用MobX将应用变成响应式可归纳为三部曲:

定义状态并使其可观察 (Observable)
创建视图以响应状态的变化 (observer)
更改状态(action)

安装

cnpm install --save mobx mobx-react

概念

Observable

Observable 值可以是JS基本数据类型、引用类型、普通对象、类实例、数组和映射。

返回相应的Observable对象

import {observable} from 'mobx';

const map = observable.map({ key: "value"});
map.set("key", "new value");

const list = observable([1, 2, 4]);
list[2] = 3;

const person = observable({
    firstName: "Clive Staples",
    lastName: "Lewis"
});
person.firstName = "C.S.";

const temperature = observable.box(20);
temperature.set(25);
import {observable} from 'mobx';

let appState = observable({
    timer: 0
});
observer

使用mobx-react observer() 来包裹 React 组件,形成了observer

import { observer } from 'mobx-react';

let App = observer(({ appState }) => {
    return (
        <div className="App">
            <h1>Time passed: {appState.timer}</h1>
        </div>
    );
});

or

import { observer } from 'mobx-react';

@observer
class App extends React.Component {
  render() {
    return (
      <div>
         <div className="App">
            <h1>Time passed: {this.props.appState.timer}</h1>
        </div>
      </div>
    );
  }
};

ReactDOM.render(<App appState={appState} />, document.getElementById('root'));
action

action 用来改变 observable的状态。

import { observable, action } from 'mobx';
var appState = observable({
    timer: 0
});
appState.resetTimer = action(function reset() {
    appState.timer = 0
});
appState.addTimer = action(function add() {
    appState.timer++
});
let App = observer(({ appState }) => {
    return (
        <div className="App">
            <button onClick={appState.resetTimer}>
                Seconds passed: {appState.timer}
            </button>
            <button onClick={appState.addTimer}>
                +
            </button>
        </div>
    );
});
ReactDOM.render(<App appState={appState} />, document.getElementById('root'));

需要注意的是,observable的状态不仅仅可以通过action改变。

对比Mobx和Redux
  • 相比ReduxMobx 省略了很多代码量
  • Redux的状态管理更严格
  • Mobx 可以设置多个store,Redux只能设置一个
  • Mobx 对性能更友好 (观察者模式 vs Object.assign()

相关文章

  • react-native + mobx 入门到放弃

    react-native + mobx 入门到放弃 标签(空格分隔): react mobx Android 作为...

  • React & MobX 入门与实战视频教程课程忆完结,这是目录

    React & MobX 入门与实战视频教程(27 个视频) React & MobX 实战视频教程 #1 介绍「...

  • React & MobX 入门与实战视频教程(27 个视频)

    React & MobX 入门与实战视频教程(27 个视频) React & MobX 实战视频教程 #1 介绍[...

  • Mobx入门(一)

    Mobx是什么 MobX实现简单、可扩展的状态管理。 使用MobX将应用变成响应式可归纳为三部曲: 定义状态并使其...

  • 前端框架

    MobX:MobX 和 React 十分钟快速入门 MobX 是一种简单的、可扩展的、久经考验的状态管理解决方案。...

  • mobx入门

    是类似于vuex,redux,flux的状态管理工具 使用方式 需要下载npm install mobx和mob...

  • mobx 入门

    mobx 响应式状态管理库 安装 基础概念 所谓的响应式,既是将原有数据结构,例如 数组,对象等转变为可观察对象,...

  • Mobx 基本入门

    Mobx, 一个简单、可扩展的状态管理插件, 可结合React, 小程序使用。 这篇文章主要讲一下mobx的基本使...

  • Flutter Mobx入门

    Flutter mobx是一种状态管理框架 核心概念 1. Observables被观察者,数据的持有者,即app...

  • mobX入门总结

    reaxt的数据管理,除了redux之外,一个新的状态管理方案mobX 配置使项目支持修饰符@(修饰符概念) 安装...

网友评论

      本文标题:Mobx入门(一)

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