globalState
是 StateMachine 的一个属性,表示 StateMachine 的全局状态。全局状态在整个状态机的生命周期中一直存在,不会随着状态的转换而改变,并且可以在任何状态下进行读取或写入。
const sm = new StateMachine({
globalState: {
count: 0,
message: '',
},
// ...
});
const count = sm.globalState.count;
const message = sm.globalState.message;
const sm = new StateMachine({
globalState: {
count: 0,
message: '',
},
// ...
});
sm.globalState.count = 1;
sm.globalState.message = 'Hello World';
请勿修改全局状态的引用,例如以下代码:
const sm = new StateMachine({
globalState: {
count: 0,
message: '',
},
// ...
});
const globalState = sm.globalState;
globalState.count = 1; // 这会改变 StateMachine 中的全局状态
正确的做法应该是:
const sm = new StateMachine({
globalState: {
count: 0,
message: '',
},
// ...
});
sm.globalState.count = 1; // 直接修改 StateMachine 中的全局状态
全局状态应该是简单类型或者可序列化的复杂类型。如果全局状态包含函数等不可序列化的属性,可能会导致状态机在序列化和反序列化时出错。