微信小程序全局数据共享学习笔记
在小程序中,可使用 mobx-miniprogram 配合 mobx-miniprogram-bindings 实现全局数据共享。其中:
- mobx-miniprogram 用来创建 Store 实例对象
- mobx-miniprogram-bindings 用来把 Store 中的共享数据或方法,绑定到组件或页面中使用
1、安装 MobX 相关的包
在项目中运行如下的命令,安装 MobX 相关的包:
cnpm i --save mobx-miniprogram@4.13.2 mobx-miniprogram-bindings@1.2.1
注意:MobX 相关的包安装完毕之后,记得删除 miniprogram_npm 目录后,重新构建 npm。
2. 创建 MobX 的 Store 实例
新建store文件夹新建store.js
// 在这个 JS 文件中,专门来创建 Store 的实例对象
import { observable, action } from 'mobx-miniprogram'export const store = observable({// 数据字段numA: 1,numB: 2,activeTabBarIndex: 0,// 计算属性get sum() {return this.numA + this.numB},// actions 函数,专门来修改 store 中数据的值updateNum1: action(function (step) {this.numA += step}),updateNum2: action(function (step) {this.numB += step}),updateActiveTabBarIndex: action(function(index) {this.activeTabBarIndex = index})
})
3. 将 Store 中的成员绑定到页面中
// pages/message/message.js
import { createStoreBindings } from 'mobx-miniprogram-bindings'
import { store } from '../../store/store'
Page({/*** 页面的初始数据*/data: {},/*** 生命周期函数--监听页面加载*/onLoad: function (options) {this.storeBindings = createStoreBindings(this, {store,fields: ['numA', 'numB', 'sum'],actions: ['updateNum1']})},btnHandler1(e) {// console.log(e)this.updateNum1(e.target.dataset.step)},/*** 生命周期函数--监听页面卸载*/onUnload: function () {this.storeBindings.detroyStoreBindings()},
})
4. 在页面上使用 Store 中的成员
<!--pages/message/message.wxml-->
<view>{{numA}} + {{numB}} = {{sum}}</view>
<van-button type="primary" bindtap="btnHandler1" data-step="{{1}}">numA + 1</van-button>
<van-button type="danger" bindtap="btnHandler1" data-step="{{-1}}">numA - 1</van-button>
5. 将 Store 中的成员绑定到组件中
新建components文件夹新建numbers组件
// components/numbers/numbers.js
import { storeBindingsBehavior } from 'mobx-miniprogram-bindings'
import { store } from '../../store/store'Component({behaviors: [storeBindingsBehavior],storeBindings: {// 数据源store,fields: {numA: 'numA',numB: 'numB',sum: 'sum'},actions: {updateNum2: 'updateNum2'}},/*** 组件的属性列表*/properties: {},/*** 组件的初始数据*/data: {},/*** 组件的方法列表*/methods: {btnHandler2(e) {this.updateNum2(e.target.dataset.step)}}
})
6. 在组件中使用 Store 中的成员
<!--components/numbers/numbers.wxml-->
<view>{{numA}} + {{numB}} = {{sum}}</view>
<van-button type="primary" bindtap="btnHandler2" data-step="{{1}}">numB + 1</van-button>
<van-button type="danger" bindtap="btnHandler2" data-step="{{-1}}">numB - 1</van-button>
微信小程序全局数据共享学习笔记相关推荐
- 微信小程序开发:学习笔记[8]——页面跳转及传参
微信小程序开发:学习笔记[8]--页面跳转及传参 页面跳转 一个小程序拥有多个页面,我们可以通过wx.navigateTo推入一个新的页面.在首页使用2次wx.navigateTo后,页面层级会有三层 ...
- 微信小程序开发:学习笔记[9]——本地数据缓存
微信小程序开发:学习笔记[9]--本地数据缓存 快速开始 说明 本地数据缓存是小程序存储在当前设备上硬盘上的数据,本地数据缓存有非常多的用途,我们可以利用本地数据缓存来存储用户在小程序上产生的操作,在 ...
- 微信小程序-全局数据共享
微信小程序-全局数据共享MobX 1.开发中常用的数据共享方案 为了解决组件之间的数据共享,开发中常用的数据共享方案有:Vuex/Redux/MobX等 2.小程序中全局数据共享方案-MobX ...
- 微信小程序入门教程学习笔记
写在前面: 作为一个刚刚入坑微信小程序的小白,以下是我在学习中的笔记,因为我真的太健忘了... 文章中可能会有错误,但是我会不断的修正的. 谢谢浏览,如有错误烦请指正 (≧∀≦)ゞ 微信官方的小程序开 ...
- 微信小程序云开发学习笔记
(官网) 1.创建小程序选择云开发 对应的环境 在app.js中配置环境Id //app.js App({onLaunch: function () {if (!wx.cloud) {console. ...
- 微信小程序云开发 mysql_微信小程序云开发学习笔记(一)云数据库
云开发配置的环境:cloud-learning 云开发环境初始化准备 需要: APPID 操作: 在创建项目时,填入APPID并选择不使用云函数 进入到开发者页面,点击左上角的云开发并选择开通 设置云 ...
- 微信小程序云开发学习笔记(二)云函数
一.创建一个云开发的小程序 1. 如下图所示创建小程序 2. 删除无关文件 删除前: 删除后: 3. 删除无关代码 index.wxml index.wxss 内的代码全部清空,index.js保留如 ...
- 微信小程序 全局数据共享 Mobx
1.首先安装MOBX 在项目所在目录下,右键选择[在外部终端窗口中打开],运行: npm install --save mobx-miniprogram@4.13.2 mobx-miniprogram ...
- 微信小程序云开发学习笔记No.03——(文件存储)
上传文件 wx.cloud.uploadFile //回调风格的API上传文件,会返回一个uploadTask对象 const uploadTask = wx.cloud.uploadFile({cl ...
最新文章
- python使用statsmodels包中的adfuller函数执行增强迪基-福勒检验(ADF检验、augmented Dickey-Fuller test)、判断时间序列数据是否平稳
- 汇编语言--数据传送指令
- 支持javascript的ppt软件_github重磅推荐!一个很好用的PPT生成工具
- 10款精选的用于构建良好易用性网站的jQuery插件
- 智能车路径提取matlab_遗传算法求解多车型车辆路径问题
- python去除视频中的logo_Python音视频开发:消除抖音短视频Logo和去电视台标的实现详解...
- 卫星为什么在那么高的太空能看清地面?
- 数据结构从0.2到1(一)
- 注册(五)之请求处理
- 一个学习PCI Express的 不错去处
- 51c语言编程入门教程,51单片机C语言入门教程
- 手机屏幕驱动板1080x1920分辨率HDMI红米note3 note4 note4x屏幕Fondar自制投影 光固化
- TSINSEE青犀视频/海康合作的RTMP推流安防摄像头的移动侦测功能介绍
- a4纸和ipad对比_我告诉你10.2寸ipad和9.7寸对比
- 迷信一把:三才数理吉凶
- B站晚会为什么被夸疯了?答案飘在84万条弹幕中……
- Android CameraX适配Android11的踩坑之路
- ireport oracle,用ireport调用oracle存储过程
- 【国家集训队】middle
- 如何实现上拉刷新下拉加载
热门文章
- java中的构造方法必须和类名相同,在Java中,关于构造方法,下列说法错误的是()A、构造方法的名称必须与类名相同B、构造方法可以...
- java全栈工程师前景,已整理成文档
- java 捕获异常打印详细错误信息:Exception e
- 计算机用户密码无法输入,电脑数字密码输入不了怎么办
- Java实现QQ邮箱验证
- Google 文档 地址
- vue props 属性值接受多个类型 _@jie
- DELL R730xd 安装PCIE SSD 后风扇转速增高的解决方法手记
- CCPC-2017 杭州站B丨HDU - 6265丨数论丨积性函数 丨欧拉函数丨狄利克雷卷积丨思维变换
- 阿里云集群服务器的正确搭建