小程序全局狀態管理:使用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
英文地址,請注明出處:http://en.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;三、高…