dva umi create-react-app 三个脚手架
mobx状态管理工具
npm install mobx -S
mobx只是用于定义状态管理的容器封装store
// music.js import { observable, // 用于定义可共享的数据,相当于vuex中的 state action, // 相当于vuex中的 mutations + actions computed, // 相当于vuex中的getters makeObservable, makeAutoObservable } from 'mobx'; export default class MusicStore { constructor() { // makeAutoObservable(this); makeObservable(this, { msg: observable, hehe: action, total: computed }) } msg = 'hello mobx'; hehe () { } // 计算属性前要加上get get total () { return } // mobx5 写法 // @observable // list = [] // @action // hehe(){} // @computed // get total () { // return // } } // index.js import MusicStore from './modules/music'; class Store { constructor() { // 在这里对子store进行实例化 this.music = new MusicStore(); } } export default new Store();
npm i mobx-react -S
用于把mobx和react连接起来- 在App.js中,使用mobx-react提供的
<Provider store={store}></Provider>
包裹组件 - 在具体的组件中使用,使用mobx-react提供的两个高阶组件
inject('store')(observer(UI组件))
把状态数据注入到组件中(通过props访问),并把组件变成观察者(当store中数据变化时,组件自动更新)
- 在App.js中,使用mobx-react提供的