小程序 状态管理 mobx-miniprogram 和 miniprogram-compute

1、mobx-miniprogram

mobx-miniprogram 是针对微信小程序开发的一个简单、高效、轻量级状态管理库,它基于 Mobx 状态管理框架实现。可以实现全局共享的状态,并自动更新视图组件,从而提升小程序的开发效率

使用 mobx-miniprogram 需要安装两个包: mobx-miniprogram 和 mobx-miniprogram-bindings

官方文档:

  1. mobx-miniprogram 官方文档

  2. mobx-miniprogram-bindings 官方文档

npm install mobx-miniprogram mobx-miniprogram-bindings
1.2 创建 Store 对象

mobx-miniprogram 详细的使用步骤如下:

  1. 在项目的根目录下创建 store 文件夹,然后在该文件夹下新建 index.js

  2. /store/index.js 导入 observable action 方法

// observable:用于创建一个被监测的对象,对象的属性就是应用的状态(state),这些状态会被转换成响应式数据。
// action:用于显式的声明创建更新 state 状态的方法
import { observable, action } from 'mobx-miniprogram'

// 使用 observable 创建一个被监测的对象
export const numStore = observable({

  // 创建应用状态
  test1: 1,
  test2: 2,
    
  // 使用 action 更新
  update: action(function () {
    this.test1+=1
    this.test2+=1
  }),

  // 计算属性,使用 get 修饰符,
  get sum() {
    return this.test1+ this.test2;
  }

})
    1.3 在组件中使用数据

    如果需要 Page 或者 Component 中对共享的数据进行读取、更新操作,需要使用 mobx-miniprogram-bindings

    mobx-miniprogram-bindings 的作用就是将 Store 和 页面或组件进行绑定关联

    如果需要在组件中使用状态,需要 mobx-miniprogram-bindings 库中导入 ComponentWithStore 方法

    在使用时: 需要将 Component 方法替换成 ComponentWithStore 方法 ,原本组件配置项也需要写到该方法中

    在替换以后,就会新增一个 storeBindings 配置项,配置项常用的属性有以下三个:

    1. store : 指定要绑定的 Store 对象
    2. fields : 指定需要绑定的 data 字段
    3. actions : 指定需要映射的 actions
    ### 关于 `mobx-miniprogram` 的使用指南 对于状态管理MobX,在微信小程序中的应用,即 `mobx-miniprogram` 提供了一种响应式的解决方案来处理复杂的状态逻辑[^1]。 #### 集成方法 为了将 MobX 整合到基于 WePY 或其他框架构建的小程序项目里,通常需要先安装依赖包: ```bash npm install mobx-miniprogram --save ``` 接着初始化 Store 并定义数据模型以及相应的操作函数。这一步骤可以参考官方文档给出的例或者社区分享的最佳实践案例。 #### 示例代码 下面是一个简单的例展示如何创建 store 页面之间的交互方式: ```javascript // app.js 中引入并配置全局 store import { createStore } from 'mobx-miniprogram' const counterStore = { count: 0, increase() { this.count += 1; }, }; App({ onLaunch() { const store = createStore(counterStore); wx.setStorageSync('store', store); // 存储至本地缓存以便各处访问 } }); // page/index/index.js 页面中获取 store 实例并与视图绑定 Page(Object.assign({}, require('mobx-wxs').page, { data: {}, onLoad(query) { let store = wx.getStorageSync('store'); this.storeBindings = require('mobx-miniprogram-binders').bindStore( store, this ); console.log(store.count); // 输出初始计数值 }, incrementCounter() { this.store.increase(); console.log(this.store.count); // 更新后的计数器值 } })); ``` 上述代码片段展示了如何通过 `mobx-miniprogram` 创建一个简易的计数器应用程序,并将其与小程序页面关联起来实现双向同步更新。
    评论
    成就一亿技术人!
    拼手气红包6.0元
    还能输入1000个字符
     
    红包 添加红包
    表情包 插入表情
     条评论被折叠 查看
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值