uni-app入门:全局数据共享方案之mobx
创始人
2024-03-04 16:53:21
0

     1.全局数据共享介绍
     2.准备工作
     3.使用说明
         3.1 page页面进行全局数据共享
         3.2 component组件进行全局数据共享

1.全局数据共享介绍

     全局数据共享也叫作状态管理,主要用于组件间数据共享问题的处理.实际开发中常用的实现方案:vuex、redux、mobx,本文主要介绍mobx.

2.准备工作

mobx需要引入两个npm包:
    mobx-miniprogram:用于创建store实例对象
    mobx-miniprogram-bindings:用于将store中数据或是方法绑定到组件或是页面中.
    安装命令(项目所在目录下执行):

npm install --save mobx-miniprogram@4.13.2 mobx-miniprogram-bindings@1.2.1

在这里插入图片描述

    安装完成之后,如果项目中存在miniprogram-npm文件夹则删除之后重新构建.构建完成之后重新生成的miniprogram-npm中会出现mobx-miniprogrammobx-miniprogram-bindings,构建方式以及构建完成新增文件夹如下:

在这里插入图片描述

3.使用说明

    第一步创建store对象用于存储共享的数据或是方法;
    第二步将store数据或是方法绑定到页面或是组件中;
    第三步页面或是组件中使用全局共享数据或是方法.
    下面以案例的形式分别说明如何在页面或是组件中进行全局数据共享.

3.1 page页面进行全局数据共享

示例说明:
    定义num1、num2、sum12,sum12为num1和num2的和,创建两个按钮,分别实现点击之后对num1进行加2或是减2的操作.同时sum12能随着num1值的变化同时进行改变.
在这里插入图片描述
创建store对象:
根目录中创建store文件夹,然后创建store.js文件.store.js中内容如下:

// 导入mobx-miniprogram中的observable方法 
import {observable} from 'mobx-miniprogram';
// 调用observable方法创建store对象实例并导出进行共享
export const store=observable({// 定义数据num1:1,num2:2,// 计算数据属性get sum12() {console.log("sum12方法执行")return this.num1+this.num2},// 更新方法1用于修改num1的值updateNum1:action(function(step){this.num1+=step;}),// 更新方法2用于修改num2的值updateNum2:action(function(step){this.num2+=step;})
})

index.js中进行页面绑定store对象数据和方法:

// 导入创建store绑定方法
import {createStoreBindings} from 'mobx-miniprogram-bindings'
// 导入store实例对象
import {store} from '../../store/store'Page({// 页面加载设置store绑定成员信息onLoad:function(){this.storeBindings=createStoreBindings(this,{store,fields:['num1','num2','sum12'],actions:['updateNum1']})},// 页面卸载时清理处理onUnload:function(){this.storeBingds=this.destroyStoreBindings()},// 按钮点击时触发的方法addNum(e){// 执行修改num1方法并按照指定步长step进行相加this.updateNum1(e.target.dataset.step)}
})

index.wxml页面中使用共享数据或是方法:

{{num1}} + {{num2}} = {{sum12}}
{2}}'>num1加2
{-2}}'> num1减2

3.2 component组件进行全局数据共享

示例说明:
    定义num1、num2、sum12,sum12为num1和num2的和,创建两个按钮,分别实现点击之后对num2进行加3或是减3的操作.同时sum12能随着num2值的变化同时进行改变.创建test组件在index页面进行引用.
在这里插入图片描述
创建store对象同上示例,此处不再重述;
test.js中绑定store对象的数据或是方法:

import {storeBindingsBehavior} from 'mobx-miniprogram-bindings'
import {store} from '../../store/store'Component({behaviors:[storeBindingsBehavior], // 使用mobx-miniprogram-bindings中storeBindingsBehavior进行数据共享storeBindings:{store,fields:{  // 绑定数据,前者为组件中数据名,后者为store中定义的数据名,两者可不一致num1:'num1',num2:'num2',sum12:'sum12'},actions:{  // 绑定方法,前者为组件中方法名,后者为store中定义的方法名,两者可不一致updateNum2:'updateNum2'}}
})

test.wxml中调用store数据或是方法:

{{num1}} + {{num2}} = {{sum12}}
{3}}'>num2加3
{-3}}'> num2减3

index.wxml中引入test组件:

{{num1}} + {{num2}} = {{sum12}}
{2}}'>num1加2
{-2}}'> num1减2
+++++++++++++++++++++++++++++++++++++

最终实现效果如下:
在这里插入图片描述

上一篇:RabbitMQ交换机

下一篇:Linux测试常用命令

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...