自定义状态类

在了解了 “状态流程”“方法流程” 后,对于一个 State 的状态变化及方法调用都能很方便监控。

但是项目中,可能有不少状态类,比如:

Hello.js

import { State } from 'bbx';

class Hello extends State {}

User.js

import { State } from 'bbx';

class User extends State {}

为了对项目的状态进行全部的监控,那需要在每个状态类中都加上 willStateUpdate 等方法?那不是很麻烦?

bbx 推荐的做法是,状态类不要直接继承于 bbx 给的 State,而是继承于自定义的文件,哪怕这个文件什么都没有做,只是返回了 bbx 的 State。

CustomState.js

import { State } from 'bbx';

export default State;

Hello.js

import { State } from './CustomState';

class Hello extends State {}

User.js

import { State } from './CustomState';

class User extends State {}

看起来是相同的,但是通过继承于自定义的状态类,就能很方便全局使用 “状态流程” 及 “方法流程”。

比如,修改 CustomState.js:

import { State } from 'bbx';

class CustomState extends State {
  willStateUpdate(nextState) {
    console.log('will state update', nextState);
  }
}
export default CustomState;

只要继承于 CustomState 的状态类在状态改变前都会先运行这个 willStateUpdate,而不用去改 Hello.js 以及 User.js。当然,“状态流程”“方法流程” 中的方法都能在自定义类中使用。

这就是自定义状态类的作用,更方便的扩展状态类的能力。

Last Updated: 8/23/2018, 9:21:11 PM