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

1.开发中常用的数据共享方案

​ 为了解决组件之间的数据共享,开发中常用的数据共享方案有:Vuex/Redux/MobX

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

​ 在小程序中,可使用mobx-miniprogram配合mobx-miniprogram-bindings实现全局数据共享。

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

3.安装及使用

3.1安装

命令如下:

npm install  --save  mobx-miniprogram@版本  mobx-miniprogram-bindings@版本

注意:重新构建npm

3.2 全局数据共享实例

在根目录下创建store/store.js,专门用来创建Store实例

// 在这个 JS 文件中,专门来创建 Store 的实例对象
//按需引入,observable专门用来创建store对象
import { observable, action } from 'mobx-miniprogram'export const store = observable({//共享数据 的 数据字段numA: 1,numB: 2,// 计算属性,get表示只读,只能获取,无法重新赋值get sum() {return this.numA + this.numB},// actions 函数,专门来修改 store 中数据的值,里面是一个函数updateNum1: action(function (step) {this.numA += step}),updateNum2: action(function (step) {this.numB += step})
})

3.3 绑定到页面

​ 在页面的.js文件中,写如下代码

//导入createStoreBindings,用来把共享的数据或方法,绑定到组件或页面中使用
import { createStoreBindings } from 'mobx-miniprogram-bindings'
// 导入store
import { store } from '../../store/store'Page({/*** 生命周期函数--监听页面加载*/onLoad: function (options) {//将store/fileds-数据/actions-方法 绑定给thisthis.storeBindings = createStoreBindings(this, {store,fields: ['numA', 'numB', 'sum'],actions: ['updateNum1']})},//普通方法的定义btnHandler1(e) {// e.target.dataset是固有属性,保存传来的step// 对应的wxml--<button type="primary" bindtap="btnHandler1" data-step="{{1}}">numA + 1<button> data-step属性表示this.updateNum1(e.target.dataset.step)},/*** 生命周期函数--监听页面卸载*/onUnload: function () {//销毁绑定this.storeBindings.detroyStoreBindings()}})

3.4 绑定到组件

3步:引入、挂载、绑定

//引入 storeBindingsBehavior
import { storeBindingsBehavior } from 'mobx-miniprogram-bindings'
//引入 store
import { store } from '../../store/store'Component({//将storeBindingsBehavior挂载到behaviors上behaviors: [storeBindingsBehavior],storeBindings: {// 数据源store,//指定要绑定的storefields: {numA: ()=>store.numA,//绑定字段的第1种方式numB: (store)=>store.numB,//绑定字段的第2种方式sum: 'sum'//绑定字段的第3种方式},//方法actions: {//指定要绑定的方法updateNum2: 'updateNum2'}},/*** 组件的方法列表*/methods: {btnHandler2(e) {this.updateNum2(e.target.dataset.step)}}
})

微信小程序-全局数据共享相关推荐

  1. 微信小程序全局数据共享学习笔记

    在小程序中,可使用 mobx-miniprogram 配合 mobx-miniprogram-bindings 实现全局数据共享.其中: mobx-miniprogram 用来创建 Store 实例对 ...

  2. 微信小程序 全局数据共享 Mobx

    1.首先安装MOBX 在项目所在目录下,右键选择[在外部终端窗口中打开],运行: npm install --save mobx-miniprogram@4.13.2 mobx-miniprogram ...

  3. 微信小程序----全局状态管理 (便于全局埋点等操作)

    说明 由于我是一个有着一颗玻璃心的博主,导致在2018年后博客很少更新.原因是由于我的分享并没有解决到部分人的问题,而导致被骂了.当时这颗玻璃心就碎了,所以这两年以来很是消极,博客很少更新.这里给那些 ...

  4. 微信小程序-------全局通信方案mobx

    微信小程序-------全局通信方案mobx 微信小程序本身并没有提供类似于vue中的vuex或者React里的Redux这样的全局通信方案,只在组件中有behaviors这样的属性共享机制,用起来也 ...

  5. 逆战之微信小程序全局配置

    微信小程序之全局配置-1 小程序的配置分为全局配置.页面配置及sitemap 配置 全局配置 小程序根目录下的 app.json 文件用来对微信小程序进行全局配置.文件内容为一个 JSON 对象,有以 ...

  6. php小程序开发实例,微信小程序全局配置开发实例

    本文主要和大家分享微信小程序全局配置开发实例,主要以代码的形式和大家分享,希望能帮助到大家. 一.app.json 使用app.json文件来对微信小程序进行全局配置,决定页面文件的路径.窗口表现.设 ...

  7. 微信小程序全局路由拦截

    前言 略 微信小程序全局路由拦截方法1 目前微信小程序没有全局路由拦截.要想实现全局路由拦截,需要自己进行扩充.具体参考这里:微信小程序–路由拦截器. 实现思路: 替换Page的参数对象的onShow ...

  8. 微信小程序 全局路由拦截

    1. 微信小程序 全局路由拦截 // utils/filter.js function loginCheck(pageObj) {if (pageObj.onLoad) {let _onLoad = ...

  9. 微信小程序全局配置文件app.json中window:backgroundColor“不生效”

    那些年我们一起踩过的坑~ 今天说一下微信小程序全局配置文件app.json中window的backgroundColor属性,设置之后发现没效果. 查了资料发现原来这个backgroundColor属 ...

最新文章

  1. BZOJ 3195: [Jxoi2012]奇怪的道路 | 状压DP
  2. Js整理备忘(02)——运算符
  3. target runtime apache v7.0 not defined 的解决方法
  4. python-多继承
  5. opengl绘制的点不显示是什么原因_中考后为什么不允许复读?原因主要在以下5点,你都清楚吗?...
  6. 苹果公司反诉堡垒之夜开发商Epic,寻求惩罚性赔偿
  7. eBPF BCC 实现UNIX socket抓包
  8. 日志框架实现数据采集分析和报警
  9. 局域网带宽控制解决方案-P2P终结者使用详解
  10. 鸿蒙系统有哪些手机可以用,鸿蒙系统支持哪些手机型号
  11. 解决PyCharm出现无法连接Docker的问题
  12. 汇总3种获取水系数据的途径
  13. 佳能Canon PIXMA MP236 打印机驱动
  14. PLM系统应包括什么
  15. Ubuntu 16.04 安装 NVIDIA GeForce GTX 1060 显卡驱动,以及 CUDA 10.1
  16. 南大计算机专业课表,南京大学计算机科学与技术系2019-2020学年第一学期仙林校区.PDF...
  17. 网页飘窗效果,jsp页面飘窗浮窗,html飘窗浮窗,点叉号关闭飘窗
  18. Markdown中给图片增加超链接
  19. 单片机定时器(65536-x)/256
  20. 【arduino】常用芯片ATMEGA328P-AU 32TQFP资料详解

热门文章

  1. 【集成学习(上)】机器学习基础_02
  2. cocos2d-x2.1.2精灵表单与表单编辑器
  3. 计算机键盘如何打字课件,教您如何熟悉键盘(打字指法)_计算机的基本知识_IT /计算机_信息...
  4. 从现在看未来,在未来看现在
  5. Eureka实战(最通俗易懂)
  6. 外卖O2O的用户画像实践
  7. JAVA:不使用第三个变量,交换两个变量的值
  8. Mongodb(学习总结)
  9. sparkstreaming的实时黑名单过滤太慢
  10. php时间函数不准确,PHP中DATE函数与实际时间相差8小时的解决办法