• 小程序-全局数据共享


    1.什么是全局数据共享

    全局数据共享(又叫:状态管理)是为了解决组件之间数据共享的问题。开发中常用的全局数据共享方案有:Vuex、Redux、Mobx等

    2.小程序中的全局数据共享方案 

    可使用mobx-miniprogram配合mobx-miniprogram-bindings实现全局数据共享。其中

    • modx-miniprogram用来创建Store实例对象
    • mobx-miniprogram-bindings用来把Store中的共享数据或方法,绑定到组件或页面中使用

    3.安装Mobx包

    注意:Mobx相关的包安装后,记得删除miniprogram-npm目录后,重新构建npm 

    4.创建Mobx的Store实例

     

    1. //在这个js文件中,专门用来创建Store的实例对象
    2. import {observable} from 'mobx-miniprogram'
    3. export const store = observable({
    4. //数据字段
    5. numA:1,
    6. numB:2,
    7. //计算属性
    8. get sum(){
    9. return this.numA+this.numB
    10. },
    11. //actions方法,用来修改store中的数据
    12. updataNum1:action(function (step)
    13. { this.numA += step
    14. }),
    15. updataNum2:action(function (step)
    16. { this.numB += step
    17. }),
    18. })

     5.将store中的成员绑定到页面中

    1. //页面js
    2. import { createStoreBindings } from 'mobx-miniprogram-bindings'
    3. import { store } from '../../store/store'
    4. onLoad: function (options) {
    5. this.storeBindings = createStoreBindings(this,{
    6. store,//数据源
    7. fields:['numA','numB','sum'],
    8. actions:['updateNum1']
    9. })
    10. },
    11. onUnload: function () {
    12. //卸载这个store
    13. this.storeBindings.destroyStoreBindings()
    14. },
    1. //页面wxml
    2. {{numA}}+{{numB}} = {{sum}}
    3. <vant-button type="danger" bindtap="btnHandler1" data-step='{{1}}'>numA+1vant-button>
    4. <vant-button type="primary" bindtap="btnHandler1" data-step='{{-1}}'>numA-1vant-button>
    5. //页面js
    6. btnHandler1(e){
    7. // console.log(e)
    8. this.updateNum1(e.target.dataset.step)
    9. },

     6.将store成员绑定到组件中

    1. import { storeBindingsBehavior } from 'mobx-miniprogram-bindings'
    2. import { store } from '../../store/store'
    3. Component({
    4. /**
    5. * 组件的属性列表
    6. */
    7. behaviors:[storeBindingsBehavior],//通过storeBindingsBehavior实现自动绑定
    8. //不知道storeBindings是从哪冒出来的
    9. storeBindings:{
    10. store,
    11. fields:{//fields不能写错,写错会无法渲染
    12. numA:()=>store.numA,//绑定的第一种方式
    13. numB:(store)=>store.numB,//绑定的第2种方式
    14. sum:'sum'//绑定的第3种方式
    15. },
    16. actions:{
    17. updateNum2:'updateNum2'
    18. }
    19. },
    20. })

    在组件中使用Store中的成员

    1. //组价.wxml结构
    2. {{numA}}+{{numB}}={{sum}}
    3. <vant-button type="danger" bindtap="btnHandler2" data-step='{{1}}'>numB+1vant-button>
    4. <vant-button type="primary" bindtap="btnHandler2" data-step='{{-1}}'>numB-1vant-button>
    5. //组件的方法列表
    6. methods: {
    7. btnHandler2(e){
    8. this.updateNum2(e.target.dataset.step)
    9. }
    10. }

  • 相关阅读:
    FPGA学习笔记(七)verilog的深入学习之任务与函数(语法篇3)
    合并后的以太坊变成什么样了?
    Golang 并发模式
    一图读懂账号安全的防护实践
    python-元组(创建方式、遍历)、可变序列与不可变序列总结
    Redis 在 C# 中的应用与集成
    从零开始,开发一个 Web Office 套件(14):复制、粘贴、剪切、全选
    《深度学习初探:使用TensorFlow和Keras构建你的第一个神经网络》
    链路层3:VLAN的配置与分析
    Bio-Helix丨Bio-Helix艾美捷100bp DNA ladder说明书
  • 原文地址:https://blog.csdn.net/weixin_53052268/article/details/126069989