欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

小程序的状态管理 wenaox

程序员文章站 2022-06-21 10:28:55
最近开发小程序,为了解耦数据 写了一个wenaox的库,一开始放在libs里使用相对路径引入,觉得很辛苦, 后面发现小程序的npm已经进入beta版本,于是下载了beta开发工具,构建后就可以直接import引入 很爽 有需要可以下载用一下 [Wenaox][wenaox url] [![NPM v ......

最近开发小程序,为了解耦数据 写了一个wenaox的库,一开始放在libs里使用相对路径引入,觉得很辛苦,
后面发现小程序的npm已经进入beta版本,于是下载了beta开发工具,构建后就可以直接import引入 很爽
有需要可以下载用一下


wechat state management

的小程序版本

Install

npm i -S wenaox
or
yarn add wenaox

小程序如何

Example

简单说说怎么使用,多个 Contro 可以去看看,构造 Store 是一样的

在 app.js 中

import { Store, Provider } from 'wenaox';

const state = {
  count: 0,
};

const methods = {
  syncs: {
    addCount(state, payload) {
      state.count = state.count + 1;
    },
    subtractCount(state, payload) {
      state.count = state.count - 1;
    },
  },
  asyncs: {
    asyncAddCount(payload, rootState) {
      setTimeout(this.addCount, 1e3);
    },
  },
};
const store = new Store({ state, methods });

const appConfig = {
  //some config
};
App(Provider(store)(appConfig));

在 page/index.js 中

import { orm } from 'wenaox';

const mapState = state => ({
  count: state.count,
});
const mapMethods = methods => ({
  addCount: methods.addCount,
  subtractCount: methods.subtractCount,
  asyncAddCount: methods.asyncAddCount,
});
const pageConfig = {
  //some config
};

Page(orm(mapState, mapMethods)(pageConfig));

在 page/index.wxml 中

<view>{{count}}</view>
<view bindtap="addCount">count + 1</view>
<view bindtap="asyncAddCount">async count + 1</view>
<view bindtap="subtractCount">count - 1</view>