mobx-react

npx create-react-app hello-mobx
yarn add mobx mobx-react react-router-dom

使用装饰器

https://www.jianshu.com/p/2e23781c957f

新建文件夹store

新建文件 homeStore.js index.js oneStore.js

homeStore.js

import { observable} from "mobx";
class HomeStore {
  @observable homeNum = 0;
}
export default HomeStore;

oneStore.js

import { observable} from "mobx";
class OneStore {
  @observable oneNum = 3333;
}
export default OneStore;

index.js

import HomeStore from "./homeStore";
import OneStore from "./oneStore";
let oneStore = new OneStore();
let homeStore = new HomeStore();
const stores = {
  oneStore,
  homeStore
};
/// 默认导出接口
export default stores;

index.js 主入口

import React from "react";
import ReactDOM from "react-dom";
import Router from "./router/router";
import { Provider } from "mobx-react";
import stores from "./store";
ReactDOM.render(
  <Provider {...stores}>
    <Router />
  </Provider>,
  document.getElementById("root")
);

home.jsx页面

import React, { Component } from "react";
+ import { observer, inject } from "mobx-react";
+ @inject("homeStore")
+ @observer
class Home extends Component {
  constructor(props) {
    super(props);
    this.state = {};
  }
  render() {
    return (
      <div>
       +  <h1>首页数据源的number为:{this.props.homeStore.homeNum}</h1>
        <button onClick={() => {  this.props.history.push("/one") }}> 
            跳转到第一个页面
        </button>
      </div>
    );
  }
}
export default Home;

修改数据源

//homeStore.js
import { observable,action} from "mobx";
class HomeStore {
  @observable homeNum = 0;
  + @action addNum() {
  +  this.homeNum += 1;
  + }
  + @action lessNum() {
  +  this.homeNum -= 1;
  + }
}
export default HomeStore;
  render() {
    return (
          //代码自行添加。。。。。。
    +  <div>
    +   <h1>首页数据源的number为:{this.props.homeStore.homeNum}</h1>
    +    <button onClick={() => {this.props.homeStore.addNum()}} >
    +      点击添加
    +    </button>
    +    <button  onClick={() => {this.props.homeStore.lessNum()}}>
    +     点击删除
    +    </button>
    +  </div>
    //代码自行添加。。。。。。
    );
  }
}
export default Home;