При 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')
= пытается перейти из начального состояния (не состояние 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