微信小程序:全局状态管理mobx-miniprogram
  TEZNKK3IfmPf 2023年11月15日 54 0

安装

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();
  },})
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月15日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年03月29日   120   0   0 sed数据
  TEZNKK3IfmPf   2023年11月15日   30   0   0 数据redis
TEZNKK3IfmPf