您当前的位置: 首页 >  微信小程序

彭世瑜

暂无认证

  • 1浏览

    0关注

    2791博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

微信小程序:全局状态管理mobx-miniprogram、mobx-miniprogram-bindings

彭世瑜 发布时间:2021-10-20 12:03:20 ,浏览量:1

安装

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

关注
打赏
1665367115
查看更多评论
立即登录/注册

微信扫码登录

0.1443s