微信小程序全局数据共享

这篇具有很好参考价值的文章主要介绍了微信小程序全局数据共享。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.概念

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

2.小程序中共享方案

在小程序中,可使用mobx-miniprogram配合mobx-miniprogram-bindings实现全局数据共享mobx-miniprogram用来创建Store实例对象
mobx-miniprogram-bindings用来把Store中的共享数据或方法,绑定到组件或页面中使用 

3.Mobx相关的包


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

4.将store中的成员绑定到页面中

4.1创建store.js

// 创建store实例对象
// 引入observable是定义store的包,action是定义修改store数据的包
import {
  observable,
  action
} from "mobx-miniprogram"
// 通过observalbe方法就可以创建store
export const store = observable({
  // 数据字段-共享的数据
  numA: 1,
  numB: 2,
  // 计算属性 get代表就是只读的
  get sum() {
    return this.numA + this.numB
  },
  // action方法,用来修改store中的数据(外界数据是不能更改的)
  // action方法包裹方法才行
  updateNum1: action(function (step) {
    this.numA += step
  }),
  updateNum2: action(function (step) {
    this.numB += step
  })
})

4.2.页面js文件

// 这个函数用于将 MobX store 绑定到小程序的页面
import {createStoreBindings} from "mobx-miniprogram-bindings"
// 引入store
import {store} from "../../store/store"
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // this指的是当前页面,当函数执行完成后,有一个返回值,挂在在页面上,作为属性
    // {包含是三个属性}
    // store数据源,fields需要的字段或者属性,绑定在页面上,actions保存需要的方法
  this.storeBindings= createStoreBindings(this,{store,
    fields:['numA','numB','sum'],
    actions:['updateNum1']
    })
  },

4.3contact.wxml文件

<!--pages/contact/contact.wxml-->
<view>{{numA}}+{{numB}}={{sum}}</view>
<van-button type="primary" bindtap="btnHandler" data-step="{{1}}">numA+1</van-button>
<van-button type="danger" bindtap="btnHandler" data-step="{{-1}}">numA-1</van-button>

4.4contact.js文件

  btnHandler(e){
    this.updateNum1(e.target.dataset.step)
  },

4.5页面展示

微信小程序全局数据共享

5. 将store中的成员绑定到组件中

5.1组件的js

import {storeBindingsBehavior} from "mobx-miniprogram-bindings"
import {store} from "../../store/store"
 behaviors:[storeBindingsBehavior],
  storeBindings:{
   //数据源
   store,
   fields:{
     //映射关系
     numA:"numA",
     numB:"numB",
     sum:"sum"
   },
   actions:{
     updateNum2:"updateNum2"
  }
  },

5.2组件的wxml文件

<view>{{numA}}+{{numB}}={{sum}}</view>
<van-button type="primary" bindtap="btnHandler2" data-step="{{1}}">numA+1</van-button>
<van-button type="danger" bindtap="btnHandler2" data-step="{{-1}}">numA-1</van-button>

5.3 组件js文件

  methods: {
    btnHandler2(e){
      this.updateNum2(e.target.dataset.step)
    }
  }

5.4页面展示

 微信小程序全局数据共享

 文章来源地址https://www.toymoban.com/news/detail-511424.html

 

 

到了这里,关于微信小程序全局数据共享的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序通过 wxministore 实现类似于vuex的全局装填数据管理

    首先 我们打开终端 引入依赖 然后 如果你是新版开发者工具 就 构建一下 如果你是 老版本的 微信开发者工具 就打开右上角详情 选择本地管理 勾选 使用 npm 模块 然后 在根目录下创建一个 store.js 当然建在哪是你自己决定的 反正 后面能引入到就好 然后 store.js 编写代码如下

    2024年02月05日
    浏览(40)
  • 微信小程序开发实战 ②③(全局数据共享)

    @作者 : SYFStrive   @博客首页 : HomePage 📜: 微信小程序 📌: 个人社区(欢迎大佬们加入) 👉: 社区链接🔗 📌: 觉得文章不错可以点点关注 👉: 专栏连接🔗 💃: 感谢支持,学累了可以先看小段由小胖给大家带来的街舞 👉 微信小程序 (🔥) 分包指的是把一个完整的

    2024年02月09日
    浏览(39)
  • 微信小程序(二)--- 数据绑定,事件绑定,全局配置window,tabBar,网络数据请求,request合法域名,GET,POST

    目录 一、WXML模板语法 1、数据绑定 (1)Mustache语法 2、事件绑定  (1)常用事件  (2)属性列表  (3)target和currentTarget的区别  (4)bindtap语法格式  (5)在事件处理函数中为data中的数据赋值 (6)事件传参 (7)bindinput的语法格式 (8)实现文本框(input)和data之间的数

    2024年02月04日
    浏览(47)
  • 微信小程序 全局配置||微信小程序 页面配置||微信小程序 sitemap配置

    小程序根目录下的 app.json 文件用来对微信小程序进行全局配置,决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等。 以下是一个包含了部分常用配置选项的 app.json : 每一个小程序页面也可以使用同名 .json 文件来对本页面的窗口表现进行配置,页面中配

    2024年02月01日
    浏览(44)
  • 微信小程序全局配置

    小程序根目录下的 app.json 文件是小程序的全局配置文件。常用的配置项如下: ① pages 记录当前小程序所有页面的存放路径 ② window 全局设置小程序窗口的外观 ③ tabBar 设置小程序底部的 tabBar 效果 ④ style 是否启用新版的组件样式  设置步骤:app.json - window - navigationBarTitle

    2024年04月17日
    浏览(36)
  • 小程序MobX创建store并实现全局数据共享

    没有package.json文件输入 npm init -y 初始化一下,初始化一个包管理 npm install --save mobx-miniprogram@4.13.2 mobx-miniprogram-bindings@1.2.1 .js文件 此时可以在页面中用{{}}使用store中的数据 使用store中的action方法 页面绑定一个方法,并且使用 data-* 进行传参 在js中使用 打印 点击之后就可以是页面

    2024年02月16日
    浏览(41)
  • 微信小程序全局路由拦截

    略 目前微信小程序没有全局路由拦截。要想实现全局路由拦截,需要自己进行扩充。具体参考这里:微信小程序–路由拦截器。 实现思路: 替换Page的参数对象的onShow或onLoad方法。 在替换的onShow或onLoad方法中判断是否已经登录。 将替换后的参数对象传给Page。 实现思路: 使

    2024年02月11日
    浏览(38)
  • 微信小程序全局配置详解

    登录网址 https://mp.weixin.qq.com/ 注册网址 https://mp.weixin.qq.com/cgi-bin/wx?token=lang=zh_CN 下载地址 https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html 描述整体的app app.js 小程序逻辑 app.json 小程序公共配置 app.wxss 小程序公共样式表 描述各自页面的page 为了方便开发者减少配置项,

    2024年02月13日
    浏览(45)
  • 微信小程序全局websocket

    全篇干货无废话 实现微信小程序全局websocket 含掉线重连,心跳保活等机制,可做参考示例 app.js

    2024年02月09日
    浏览(43)
  • 微信小程序 使用全局变量

    微信小程序里面有个 app.js ,我们可以在这个里面设置全局变量, 全局变量的定义:  globalData: {         userInfo: null,         tempFilePathslist: []     }  全局变量的获取: 在 app.js 文件中,直接使用,如: var gettempFilePathslist = this.globalData.tempFilePathslist 在 其他非app

    2024年02月02日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包