mobx

解释: 在小程序开发中,总会遇到多页面需要使用同一数据的情况,从而产生了希望引入mobx、redux等数据状态管理框架的诉求。smt-mobx是小程序使用mobx的连接器,帮助开发者在小程序开发中使用mobx。mobx使用的是4.13.1版本。mobx官网,小程序中使用三方npm包方法,见npm使用说明

方法参数

createStoreManager方法参数说明:

在onLoad或者attached时创建storeManager

参数类型必填默认值说明
targetObject当前上下文
optionsObject包括observable后的store,fields,actions
throttleFunction可throttle的函数,默认为swan.nextTick

options 参数说明

属性名类型必填默认值说明
storeObjectobservable后的store
fieldsObject/Array需要同步到小程序data上的数据。当类型为Object时,可以自定义挂载到data上的属性名
actionsObject/Array修改store状态的动作,当类型为Object时,可以自定义挂载到storeManager上的方法名

返回值

返回storeManager对象,storeManager对象包括以下方法

名称类型说明
destoryAllFunction清空所有storeManager
updateImmediatelyFunction及时同步store的状态更新到小程序data上
actions中的方法Functionactions中的所有方法,都会挂到storeManager

代码示例

在开发者工具中预览效果

扫码体验

mobx - 图1请使用百度APP扫码

图片示例

mobx - 图2

mobx - 图3

mobx - 图4

代码示例

  1. npm install @smt-lib/mobx
  1. // store.js
  2. import { observable, action } from 'mobx';
  3. export const store = observable({
  4. // 数据字段
  5. a: 1,
  6. b: 2,
  7. addA: action(function () {
  8. this.a++;
  9. }),
  10. addB: action(function () {
  11. this.b++;
  12. })
  13. });
  14. // 页面a
  15. import {createStoreManager} from '@smt-lib/mobx';
  16. import {store} from './store';
  17. Page({
  18. data: {
  19. // 默认数据
  20. },
  21. onLoad () {
  22. // 将actions上的方法,绑到this.storeManager上
  23. // 将fields上的数据,链接到this.data上
  24. this.storeManager = createStoreManager(this, {
  25. store,
  26. fields: ['a', 'b'],
  27. actions: {
  28. myAddA: 'addA',
  29. myAddB: () => store.addB
  30. }
  31. });
  32. },
  33. updateNum() {
  34. this.data.a // 获取store中的a
  35. this.storeManager.myAddA(); // 调用store.js中的addA方法
  36. },
  37. onUnload() {
  38. // 在onUnload时需要清空绑定的storeManager
  39. this.storeManager.destoryAll();
  40. }
  41. });