全局数据共享
全局数据共享(又叫做状态管理)是为了解决组件之间数据共享的问题。
在小程序中,可使用mobx-miniprogram配合mobx-miniprogram-bindings实现全局数据共享、
- mobx-miniprogram用来创建Store实例对象
- mobx-miniprogram-bindings用来把Store中的共享数据和方法,绑定到组件或页面中使用
安装相关的包
npm install --save mobx-miniprogram@4.13.2 mobx-miniprogram-bindings@1.2.1
仍需要先删除miniprogram_npm再进行构建
创建Store实例,在根目录创建store文件夹,再新建一个store.js文件,在这个文件中导入mobx-miniprogram这个包的observable,并且导出store,将共享的数据放进store中
import {observable} from 'mobx-miniprogram'
export const store = observable({
num1:1
})
store中的计算属性,这个值是只读的,不可以重新赋值
// 计算属性
get sum(){
return this.num1++
}
actions方法是专门用来修改store中的数据
首先导入import {observable,action} from 'mobx-miniprogram'
updateNum:action(function(val){
this.num1 += val
})
将Store中的成员绑定到页面中
在页面中导入
import {createStoreBindings} from 'mobx-miniprogram-bindings'
import {store} from '../store/store'
onLoad(options) {
this.storeBindings = createStoreBindings(this,{
store,
fields:['num1'],
actions:['updateNum']
})
},
最终的清理工作
onUnload() {
this.storeBindings.destroyStoreBindings()
},
使用仓库中的数据
<view>
{{num1}}
</view>
changeNum(){
this.updateNum(2)
},
在组件中绑定store的数据
import {storeBindingsBehavior} from 'mobx-miniprogram-bindings'
import {store} from '../../store/store'
behaviors:[storeBindingsBehavior],
storeBindings:{
store,
fields:{
num1:'num1'
},
actions:{
updateNum:'updateNum'
}
},