安装
npm install --save mobx-miniprogram mobx-miniprogram-bindings
定义 store.js
/**
* 全局状态管理
*/
import { observable, action } from 'mobx-miniprogram';
export const store = observable({
// 数据字段
numA: 1,
numB: 2,
// 计算属性
get sum() {
return this.numA * this.numB;
},
// actions
update: action(function () {
this.numA++;
}),
});
在 Component 构造器中使用
import{ storeBindingsBehavior }from'mobx-miniprogram-bindings'
import{ store }from'./store'
Component({
// behavior 绑定
behaviors:[storeBindingsBehavior],
data:{
someData:'...'
},
storeBindings:{
store,
fields:{
numA:()=> store.numA,
numB:(store)=> store.numB,
sum:'sum'
},
actions:{
buttonTap:'update'
},
},
methods:{
myMethod(){
this.data.sum // 来自于 MobX store 的字段
}
}
})
在 Page 构造器中使用:
import{ createStoreBindings }from'mobx-miniprogram-bindings'
import{ store }from'./store'
Page({
data:{
someData:'...'
},
onLoad(){
// 手工绑定
this.storeBindings = createStoreBindings(this,{
store,
fields:['numA','numB','sum'],
actions:['update'],
})
},
// 一定要调用清理函数,否则将导致内存泄漏!
onUnload(){
this.storeBindings.destroyStoreBindings()
},
myMethod(){
this.data.sum // 来自于 MobX store 的字段
}
})
在 app.js 中使用
import { store } from './store';
App({
onShow(options) {
// 更新
store.update();
},
})
参考
https://www.bookstack.cn/read/miniprogram-extended/54620b3fcfec59b9.md