小程序全局状态管理:使用MobX进行跨组件数据共享详解(九)

一、定义

全局数据共享(又叫:状态管理)是为了解决组件之间数据共享的问题;

全局数据共享方案:VueX、Redux、MobX等;

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

使用mobx-miniprogram配合mobx-miniprogram-bindings实现全局数据共享;

mobx-miniprogram用来创建Store实例对象

mobx-miniprogram-bindings用来把Store中的共享数据或方法,绑定到组件或页面中

三、安装mobx

# 安装最新包
npm install --save mobx-miniprogram mobx-miniprogram-bindings
# 指定版本
npm install --save mobx-miniprogram@4.13.2 mobx-miniprogram-bindings@1.2.1

四、创建Store实例

注意:只能通过函数修改store中值,不能直接修改

// 在这个 JS文件中,专门创建Store实例对象// 导入mobx-miniprogram中observable,action这两个方法
import {observable,action} from 'mobx-miniprogram'// 导出
export const store = observable ({// 挂载共享数据numA:1,numB:2,// 计算属性 get代表只读get sum() {return this.numA + this.numB},// 定义action函数,特意修改store中数据的值updateNum1: action(function(step) {this.numA += step}),// 定义action函数,特意修改store中数据的值updateNum2: action(function(step) {this.numB += step})
})

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

实现思路:

1、在页面js中引入mobx-miniprogram-bindings和store

2、在页面加载中通过bindings加载函数

3、在onUnload中清楚数据

操作:

/*** 生命周期函数--监听页面加载*/onLoad(options) {//  createStoreBindings(当前页面实例,page对象)// page对象:{数据源,需要绑定的属性,需要绑定的方法}this.storeBindings = createStoreBindings(this,{store,fields:['numA','numB','sum'],actions:['updateNum1']})},/*** 生命周期函数--监听页面卸载*/onUnload() {this.storeBindings.destroyStoreBindings}

六、在页面中使用Store中的成员

<view> {{numA}} + {{numB}} = {{sum}}</view>
<van-button type='primary' bindtap="updateNumA" data-step="{{1}}">+1</van-button>
<van-button type='danger' bindtap="updateNumA" data-step="{{-1}}">-1</van-button>
import {createStoreBindings} from 'mobx-miniprogram-bindings'
import {store} from '../../store/store'Page({/*** 页面的初始数据*/data: {username:'ZhangSan',country:'CHINA'},updateNumA(e) {this.updateNum1(e.target.dataset.step)},/*** 生命周期函数--监听页面加载*/onLoad(options) {//  createStoreBindings(当前页面实例,page对象)// page对象:{数据源,需要绑定的属性,需要绑定的方法}this.storeBindings = createStoreBindings(this,{store,fields:['numA','numB','sum'],actions:['updateNum1']})},/*** 生命周期函数--监听页面卸载*/onUnload() {this.storeBindings.destroyStoreBindings}
})

七、在组件中使用Store中的成员

// 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: {// 第四步 调用方法updateNumB (e) {this.updateNum2(e.target.dataset.step)}}
})
<!-- 第三步 绑定数据 -->
<van-button type="primary" bindtap="updateNumB" data-step="{{1}}">+1</van-button>
<van-button type="danger" bindtap="updateNumB" data-step="{{-1}}">-1</van-button>
<view>························</view>
<my-numbers></my-numbers>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/94204.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/94204.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生成模型 | DDPM -> Imrpoved DDPM -> DDIM

DDPM: Denoising Diffusion Probabilistic Models 采样过程中的迭代计算为&#xff1a; xt−11αt(xt−1−αt1−αˉϵθ(xt,t))β~tzx_{t-1} \frac{1}{\sqrt{\alpha_t}}(x_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar{\alpha}}}\epsilon_{\theta}(x_t, t)) \sqrt{\tilde{\beta…

Linux驱动之DMA(三)

目录一、驱动内容1. 核心结构体解析2. 关键模块解析3. 驱动初始化流程4. 关键寄存器操作5. 典型工作流程6. 代码特点7. 重要函数列表8. 使用示例二、驱动中DMA的使用1. DMA通道初始化&#xff08;imx_uart_dma_init&#xff09;2. DMA发送流程&#xff08;imx_uart_dma_tx&…

MongoDB 分片集群把非分片集合转成分片集合

记得关注一下博主&#xff0c;博主每天都会更新IT技术&#xff0c;让你有意想不到的小收获哦^_^ 文章目录*记得关注一下博主&#xff0c;博主每天都会更新IT技术&#xff0c;让你有意想不到的小收获哦^_^*一、MongDB集群启停止1、MonogoDB分片集群服务启动顺序(三台主机都要操作…

mybatis过渡到mybatis-plus过程中需要注意的地方

将 MyBatis 升级为 MyBatis-Plus&#xff08;简称 MP&#xff09;是一个平滑过渡的过程&#xff0c;因为 MP 是 MyBatis 的增强工具&#xff08;而非替代&#xff09;&#xff0c;但仍有一些关键注意事项需要关注&#xff0c;以确保升级后功能兼容且能充分利用 MP 的特性&#…

openEuler系统中如何将docker安装在指定目录

在 openEuler 中&#xff0c;Docker 的默认数据存储目录为 /var/lib/docker&#xff08;程序文件通常安装在系统默认路径&#xff0c;一般无需修改&#xff09;。若需将 Docker 数据&#xff08;镜像、容器、卷等&#xff09;存储到指定目录&#xff0c;可通过修改 Docker 配置…

2.4 我国金融市场的监管体制

1、国务院金融发展委员会职责 2、中国人民银行职责

PHP - 实例属性访问与静态方法调用的性能差异解析

观察到了一个看似矛盾的现象&#xff1a;实例属性访问更快&#xff0c;但静态方法调用更快。这实际上是两种不同的操作&#xff0c;下面我将详细解释其中的原理和差异。1. 实例属性访问为什么快访问机制class MyClass {public $instanceProp 1; }$obj new MyClass(); $value …

音视频面试题集锦第 31 期

音视频面试题集锦第 31 期&#xff1a; 1、I 帧、P 帧和 B 帧的概念及区别&#xff1f;2、视频编码中的码率控制技术有哪些&#xff1f;3、音频采样参数有哪些&#xff1f;4、RTMP 和 HLS 协议各有什么特点&#xff1f;如何选择&#xff1f;5、WebRTC 中的 ICE、STUN、TURN 各…

企业视频库管理高效策略

内容概要本文全面探讨企业视频库管理的高效策略&#xff0c;旨在帮助组织优化视频资源处理。首先&#xff0c;我们将介绍企业视频库管理的基本概念和核心价值。接着&#xff0c;深入分析智能分类核心技术如何通过AI算法实现视频自动归类。之后&#xff0c;阐述云集成实现路径&a…

WebSocket和跨域问题

WebSocket 特点 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。简单来说&#xff0c;它就像是在客户端和服务器之间建立了一条"专用通道"&#xff0c;双方可以随时主动发送消息给对方&#xff0c;而不需要像HTTP那样总是由客户端发起请求。 同一时间、双向…

微服务-19.什么是网关

一.网关曾经我们的项目是单体项目&#xff0c;前端只需要请求8080端口&#xff0c;就可以获取所有需要的数据和服务并进行渲染。但是拆分成微服务后&#xff0c;会面临几大问题&#xff1a;1.但是现在我们将该单体项目拆分成了微服务项目&#xff0c;每个项目都有自己独立的端口…

从字节码层面剖析以太坊智能合约创建原理

1. 引言 阅读完本文之后&#xff0c;将能理解一下字节码含义&#xff1a; 608060405260405160893803806089833981016040819052601e916025565b600055603d565b600060208284031215603657600080fd5b5051919050565b603f80604a6000396000f3fe6080604052600080fdfea2646970667358221…

typora无需激活版及最新激活版方法!双击安装就能用

介绍 Typora 是一款Markdown编辑器&#xff0c;支持实时预览&#xff0c;所见即所得。跨平台&#xff0c;支持Windows、macOS、Linux。适合写作、笔记、技术文档等。本教程将提供合法安全的安装方案&#xff0c;并解决常见问题&#xff0c;助你高效完成部署&#xff01; 直接…

基于Java、GeoTools与PostGIS的对跖点求解研究

目录 前言 一、对跖点简介 1、地理学定义 2、人生哲学含义 二、对跖点求解 1、Java求解 2、Geotools求解 3、PostGIS求解 4、三种计算方法的对比 5、Leaflet展示对跖点 三、总结 前言 在地理信息系统&#xff08;GIS&#xff09;领域&#xff0c;对跖点&#xff08;A…

Linux-函数的使用-编写监控脚本

Linux-函数的使用-编写监控脚本前言一、监控cpu二、采集内存的使用信息三、采集磁盘和分区的使用信息四、显示进程的信息前言 编写监控脚本实现以下功能 监控cpu&#xff0c;内存&#xff0c;磁盘&#xff0c;进程等信息&#xff0c;每隔5分钟记录这些信息到日志文件里perform…

Authelia:开源双因素认证与单点登录解决方案

项目标题与描述 Authelia是一个开源的认证和授权服务器&#xff0c;专注于为应用程序提供双因素认证&#xff08;2FA&#xff09;和单点登录&#xff08;SSO&#xff09;功能。通过Web门户&#xff0c;Authelia能够作为身份和访问管理&#xff08;IAM&#xff09;系统&#xff…

Apache Ozone 介绍与部署使用(最新版2.0.0)

目录 一、软件介绍 二、软件架构 Ozone Manager&#xff08;OM&#xff09; Storage Container Manager&#xff08;SCM&#xff09; Containers Datanodes Storage Containers Recon Recon 和 Ozone Manager Recon 和 Storage Container Manager 三、安装部署 准备…

Review --- Linux

Review — Linux Linux 是一种开源的类 Unix 操作系统内核&#xff0c;广泛应用于服务器、嵌入式设备和个人计算机中。其核心特点是开源、稳定、安全和高度的可定制性。对于大学毕业生而言&#xff0c;掌握 Linux 的基本操作和原理是进入 IT 行业的重要技能之一。 Linux 的基本…

【msyql 】占用硬盘太大 ,那些文件可以清理

从目录内容来看&#xff0c;这台 MySQL 服务器上主要是 xxl-job 调度平台的数据库。占用空间最大的是&#xff1a;24G xxl_job_log.ibd这个文件是 xxl-job 的任务执行日志表&#xff0c;随着时间推移&#xff0c;日志量会非常大。可以清理的文件和方法1. 清理 xxl_job_log 表数…

58 C++ 现代C++编程艺术7-模板友元

C 现代C编程艺术7-模板友元 文章目录C 现代C编程艺术7-模板友元一、基础应用场景 &#x1f9e9;1. 模板类声明友元函数2. 普通类声明模板函数为友元二、模板类互访场景 ⚙️1. 同类模板互访&#xff08;一对一&#xff09;2. 异类模板互访&#xff08;多对多&#xff09;三、高…