微信小程序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
    }
  },
经验分享 程序员 微信小程序 职场和发展