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;
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did222482