小程序全局变量管理-mobx引入与使用

背景:

对于全局变量操作,如果不规范使用很容易产生意想不到的问题,使用mobx对全局变量进行管理,能够规范代码操作,使程序变得简单高效。

代码使用:

1)定义全局变量

javascript 复制代码
import { action, observable } from 'mobx-miniprogram'

export const testStore = observable({
  // 数据
  count: 0,
  // action
  add: action(function() {
    // 添加监听
    this.count = this.count + 1
  })
})

2)页面1中引用 该变量

page1.ts

javascript 复制代码
// pages/page1/page1.ts
import { testStore } from "../../store/test";
import { createStoreBindings } from "mobx-miniprogram-bindings";
Page({

  /**
   * 页面的初始数据
   */
  data: {

  },
  handleJumpTo() {
    console.log("跳转")
    // wx.redirectTo({
    //   url: '/packageA/pages/page1/page1'
    // })
    wx.navigateTo({
      url: '/packageA/pages/page1/page1'
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad() {
    createStoreBindings(this,{
      store: testStore,
      fields: ['count']
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})

page1.wxml

XML 复制代码
<view class="page1">
  <view bind:tap="handleJumpTo">跳转page2</view>
  <view>全局变量:{{count}}</view>
</view>

3)页面2中更改该变量。

javascript 复制代码
// packageA/pages/page1/page1.ts
import { testStore } from '../../../store/test'
import { createStoreBindings } from "mobx-miniprogram-bindings";
Page({

  /**
   * 页面的初始数据
   */
  data: {

  },
  handleBack() {
    wx.navigateBack({})
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad() {
    createStoreBindings(this,{
      store: testStore,
      fields: ['count'],
      actions: ['add']
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})
XML 复制代码
<!--packageA/pages/page1/page1.wxml-->
<view>
  <view bind:tap="add">更改全局变量</view>
  <view>全局变量:{{count}}</view>
  <view bind:tap="handleBack">返回查看全局变量</view>
</view>

4)测试。页面1跳转至页面2,页面点击更改变量后返回页面1,全局变量同步发生了变化。

相关推荐
腾讯数据架构师几秒前
任务跑完怎么直接出图表?CubeStudio 任务可视化 ECharts 数据格式实操(CSV/JSON + metric.json,11 种图表一键渲染)
前端·json·echarts·数据可视化
小小小米粒7 分钟前
不是在构造方法「之前」修饰 Bean、注入;是构造方法跑完之后,才做属性注入,再跑 @PostConstruct。
前端
小李科技30 分钟前
【性能优化】事件委托:目标定位与 React/Vue 实战
前端·vue.js·react.js·面试·性能优化·前端框架
QianhangQianping37 分钟前
一块大屏的数据在浏览器里怎么变成画面:背景、子屏、前景三层结构
前端·低代码·架构·编辑器·数据可视化·大屏可视化
梦想很大很大1 小时前
让 Codex 自由发挥,给 nvm-desktop 换个 UI
前端·人工智能·设计
蓝莓味的口香糖1 小时前
【VUE】【CSS】Vue移动端适配主流方案总结
前端·css·vue.js
shennv8881 小时前
接入大模型流式输出后,文字偶尔乱码?问题可能出在前端
前端
csj501 小时前
前端基础之《React(16)—Modal组件封装》
前端·react.js
雨季mo浅忆1 小时前
Vue关于前端XSS漏洞修复方案
前端·xss
上火的金鱼妹1 小时前
关于多进程sse连接通知的实战
javascript·状态模式·sse