微信小程序7,全局数据共享
全局数据共享
全局数据共享(又叫做状态管理)是为了解决组件之间数据共享的问题。 在小程序中,可使用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
}
},
上一篇:
uniapp开发微信小程序-2.页面制作
