revert
方法用于将状态机的当前状态转换回上一个状态,并执行从当前状态到上一个状态的所有过渡动作的退出动作。该方法不会改变状态机的初始状态或历史状态。
stateMachine.revert()
revert
方法不返回任何值。
const stateMachine = new StateMachine({
init: 'off',
transitions: [
{ name: 'toggle', from: 'off', to: 'on' },
{ name: 'toggle', from: 'on', to: 'off' }
],
methods: {
onBeforeTransition: function (transition) {
console.log(`onBeforeTransition: ${this.state} -> ${transition.to}`);
},
onLeaveOff: function () {
console.log('turn off');
},
onEnterOn: function () {
console.log('turn on');
},
onLeaveOn: function () {
console.log('turn on');
},
onEnterOff: function() {
console.log('turn off');
}
}
});
stateMachine.toggle(); // 输出:onBeforeTransition: off -> on,turn on,onEnterOn: on,onLeaveOff: off
stateMachine.revert(); // 输出:onLeaveOn: on,onEnterOff: off,turn off,onLeaveOn: on,turn off,onEnterOff: off
revert
方法不会执行任何动作。revert
方法只能回到上一个状态,不能往前回到之前的状态。如果需要回到之前的状态,可以考虑使用 history
或 push
方法。new StateMachine
后直接调用 revert
方法,则会抛出错误 Error: Current state machine has no states
。