waft提供了全局状态store。

store数据获取

  1. improt { store } from 'waft';
  2. const globalData = store.getGlobalData();
  3. const menuData = globalData.getObject("globalData");

store设置数据

import { store } from 'waft'

store.dispatch('menuData', new JSONObject())

store更新订阅

在component或者page中,可以通过this.observer方法监听全局store的更改。
immediate参数:是否立即返回监听字段的初始值。

export class Login extends Page {
  constructor(props: ComponentProps) {
    super(props);
    // 监听全局store变化
    this.observer(['menuData'], (key:string, data: JSONObject)=>{
      console.log('menuData change:' + data.toString());
    }, {
      immediate: true
    });
  }
}

store默认映射到当前页面的state

在component或者page中,可以通过this.connect方法把store中的内容订阅并同步到page的state上。
第二个参数可以传入一个reducer,修改参数再返回。return null时不处理。

export class Login extends Page {
  constructor(props: ComponentProps) {
    super(props);
    // 自动把store的key内容同步到page的state
    this.connect(['menuData']);
    // 监听全局store变化,并修改; 
    this.connect(['menuData'], (key:string, data: JSONObject, oldData: JSONObject | null)=>{
        return data;
    });
  }
}