在console.log(HFSM),我们可以在 proto 属性中看到此状态机的属性及其方法。初始状态在 HFSM.initialState 上,如果值是我们要找的,那就是HFSM.initialState.value
登录控制台,观察返回对象的属性:
HFSM.getInitialState() = 机器的初始状态,尚未启动,未进行任何转换尝试
- changed: undefined
- value: {}
- event: {type: "xstate.init"}
HFSM.initialState
- changed: undefined
- value: {init: "leaf"}
- event: {type: "xstate.init"}
HFSM.transition(HFSM.initialState, 'FAKE_EVENT')= 尝试从初始 state (不是状态 name - https://xstate.js.org/docs/guides/transitions.html#machine-transition-method )转换,使用虚假事件,所以什么都不做并保持在状态机器试图从
过渡
- changed: false
- value: {init: "leaf"}
- event: {type: "FAKE_EVENT"}
HFSM.transition(HFSM.initialState, 'REAL_EVENT')
- changed: true
- value: {init: "leaf2"}
- event: {type: "REAL_EVENT"}
从 xstate.js 版本 4.0 开始,看起来我们可以使用解释器,它可以“跟踪当前状态”,以及其他有用的东西。 https://xstate.js.org/docs/guides/interpretation.html#interpreter.
所以一旦这个服务被初始化:const serv = interpret(HFSM)
我们可以通过serv.start() 或serv.init() 获得初始状态。
serv.start() === serve.init() // true