html52.com
我爱小程序-开发者交流社区

在小程序中使用wenaox进行状态管理

一个轻量性能好的微信小程序的状态管理库(已有多个线上项目)


文档已更新,详情可直接查看 wenaox


Wenaox

wechat state management

本次 v0.3.0 修改 优化性能 onHide 后取消监听 onShow 后继续监听

Install

npm i -S wenaox
or
yarn add wenaox

小程序如何构建 npm

Example

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

在 app.js 中

使用 Provider 注入 store

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);
    },
  },
};
//一个打印state改变前后的log中间件
const log = store => next => payload => {
  console.group('state改变前:', store.state);
  next(payload);
  console.log('state改变后:', store.state);
  console.groupEnd();
};
//使用Store注册store  第一个参数为控制器对象,第二个参数为中间件数组
const store = new Store({ state, methods }, [log]);

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

在 page/index.js 中

使用 orm 往 page 中注入 state 以及 methods

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>

v0.2.0 增加了映射到 Component 的方法 ormComp

在 一个 components 的 js 文件中

使用 ormComp 往 page 中注入 state 以及 methods 使用方法一样

import { ormComp } from 'wenaox';

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

Component(ormComp(mapState, mapMethods)(compConfig));

网友回复

Embrace?:

v0.3.3 修复 onload 在注入 state 之前执行出现的 bug

v0.3.2 继续优化了 orm 和 ormComp 的性能,以及加入 loading

陈式坚:

非常感谢

之前看到网上其他的一些状态管理包,比如redux的,有点不太适应

楼主这个的使用和vuex的比较像,上手快



评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

真正的个人免签约支付接口

云免签H5支付