美文网首页
全局数据共享- MobX(微信小程序学习day33)

全局数据共享- MobX(微信小程序学习day33)

作者: 扶得一人醉如苏沐晨 | 来源:发表于2023-12-24 09:31 被阅读0次

    一、什么是全局数据共享

    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)
        },
     }
    

    相关文章

      网友评论

          本文标题:全局数据共享- MobX(微信小程序学习day33)

          本文链接:https://www.haomeiwen.com/subject/xfiiwdtx.html