微信小程序全局数据共享- MobX

本文详细介绍了如何在微信小程序中利用MobX进行全局数据管理,包括安装相关包、创建store.js文件、绑定store到页面和组件,以及使用actions进行数据更新操作。
摘要由CSDN通过智能技术生成

一、什么是全局数据共享

image.png

二、小程序中的全局数据共享方案

image.png

三、安装 MobX 相关的包

3.1. 安装命令

npm install --save mobx-miniprogram@4.13.2 mobx-miniprogram-bindings@1.2.1

3.2. 删除原来的miniprogram_npm

image.png

3.3. 重新构建npm

image.png

3.4. 新的miniprogram_npm

image.png

四、封装store.js

根目录创建store文件夹–>新建store.js
image.png

// 在这个 JS 文件中,专门来创建 store 的实例对象
import { action, observable } from 'mobx-miniprogram'

export const store = observable({
    // 数据字段
    numA: 1,
    numB: 2,
    // 计算属性
    get sum() {
        return this.numA + this.numB
    },
    // actions 方法,用来修改 store 中的数据
    updateNumA: action(function (step) {
        this.numA += step
    }),
    updateNumB: action(function (step) {
        this.numB += step
    }),
})

五、将 store 中的成员绑定到页面中

image.png

// 页面的wxs结构
import { createStoreBindings } from 'mobx-miniprogram-bindings'
import { store } from '../../store/store'
Page({
    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        this.storeBindings = createStoreBindings(this, {
            store,
            fields: ['numA', 'numB', 'sum'],
            actions: ['updateNum1'],
        })
    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {
        this.storeBindings.destroyStoreBindings()
    },
})
// 页面的 .wxml 结构
<view>{{numA}} + {{numB}} = {{sum}}</view>

<van-button type="primary" bind:tap="btnHandler" data-step="{{1}}">numA+1</van-button>
<van-button type="primary" bind:tap="btnHandler" data-step="{{-1}}">numA-1</van-button>
// 页面的 .wxs 结构
// 按钮 tap 事件的处理函数
btnHandler(e) {
     this.updateNumA(e.target.dataset.step)
},

六、将store 中的成员绑定到组件中

image.png

// 组件的wxs结构
// 通过 storeBindingsBehavior 来实现自动绑定
import { storeBindingsBehavior } from 'mobx-miniprogram-bindings'
import { store } from '../../store/store'
Component({
    behaviors: [storeBindingsBehavior],
    storeBindings: {
        store, // 指定要绑定的 Store
        fields: { // 指定要绑定的字段数据
            numA: () => store.numA, // 绑定字段的第 1 种方式
            numB: (store) => store.numB,  // 绑定字段的第 1 种方式
            sum: 'sum' // 绑定字段的第 3 种方式
        },
        actions: { // 指定要绑定的方法
            updateNumB: "updateNumB"
        }
    },
})
// 组件的 .wxml 结构
<!--components/numbers/numbers.wxml-->
<view>{{numA}} + {{numB}} = {{sum}}</view>

<van-button type="primary" bind:tap="btnHandler" type="danger" data-step="{{1}}">numB+1</van-button>
<van-button type="primary" bind:tap="btnHandler" type="danger" data-step="{{-1}}">numB-1</van-button>
// 组件的 .wxs 结构
/**
 * 组件的方法列表
 */
methods: {
    // 测试store
    btnHandler(e) {
        this.updateNumB(e.target.dataset.step)
    },
 }
  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值