小程序 mobx

本文介绍如何在微信小程序中使用MobX进行跨页面数据管理。通过安装mobx-miniprogram和mobx-miniprogram-bindings包,配置project.config.json,定义可观察的store(含计算属性和action),并在页面和组件中通过createStoreBindings或storeBindingsBehavior实现数据绑定与action调用,实现多页面共享状态。

作者:zhuge···预计阅读 7 分钟·3,001 阅读·0 评论
小程序 mobx

来源:使用 MobX 来管理小程序的跨页面数据 | 微信开放社区 (qq.com)

```bash npm install —save mobx-miniprogram mobx-miniprogram-bindings ``` project.config.json ```json “packNpmManually”: true, “packNpmRelationList”: [ { “packageJsonPath”: “./package.json”, “miniprogramNpmDistDir”: “./“ } ], ``` store.js ```javascript import { observable , action } from ‘mobx-miniprogram’ export const store = observable({ numA: 1, numB: 2, //定义计算属性 get sum(){ return this.numA+this.numB }, //定义action方法,用来修改store中的数据 updateNumA:action(function(step){ this.numA+=step }) }) ``` 页面 ```html {{ numA }} + {{ numB }} = {{ sum }} numA + 1 numA -1 goPa ``` 页面js ```javascript import { createStoreBindings } from “mobx-miniprogram-bindings” import {store}from ‘../../store/store’ Page({ onLoad(options) { this.storeBindings = createStoreBindings(this, { store, fields: [‘numA’, ‘numB’, ‘sum’], actions: [‘updateNumA’] }) }, btnHandler1 (e) { this.updateNumA(e.target.dataset.step) }, goPa() { wx.navigateTo({ url: ‘/pages/storey/storey’ }) }, onUnload() { this.storeBindings.destroyStoreBingds() } }) ``` 组件 ```html {{numA}} ``` 组件js ```javascript import { storeBindingsBehavior } from ‘mobx-miniprogram-bindings’ import { store } from ‘../../store/store’ Component({ // 通过 storeBindingsBehavior 来实现自动绑定 behaviors: [storeBindingsBehavior], storeBindings: { store, // 指定要绑定的 Store // 指定要绑定的字段数据 fields: { numA:’numA’, //numA: () => store.numA, // 绑定字段的第 1 种方式 numB: (store) => store.numB, // 绑定数据的第 2 个方式 sum: ‘sum’ // 绑定数据的第 3 个方式 }, // 指定要绑定的方法 actions: { updateNumA: ‘updateNumA’ } } }) ```

相关文章

评论

加载中...