xstate에서 작업이 실행될 때
대부분의 경우 실제로 중요하지 않습니다. 할 때까지. 내가 "현명하게"사용하려고 할 때까지 transient transitions .
주어진 following statechart :
const machine = Machine(
{
initial: 'idle',
context: {
winning: 'heads',
selected: 'tails'
},
states: {
idle: {
on: {
SELECT: [
{ target: 'playing' }
]
},
},
playing: {
// It might seem that entry level action fires first.
entry: ['flipCoin'],
on: {
'': [
// And *after* that the guard is checked.
// But this is not how it works.
{ target: 'score', cond: 'isScore' },
{ target: 'nope' }
]
}
},
nope: {
type: 'final'
},
score: {
type: 'final'
},
}
}, {
guards: {
isScore(context) {
console.log('guard isScore');
return context.selected === context.winning;
},
},
actions: {
flipCoin(context) {
context.selected = 'heads';
console.log('action flipCoin');
}
}
}
);
entry
action이 flipCoin
라고 하면 state selected='heads'
가 guard isScore
가 반환되므로 true
(4967914)로 끝납니다. ) .그러나 이것은 일이 작동하는 방식이 아닙니다. final state에 따르면 :
Actions are not immediately triggered. Instead, the State object returned from machine.transition(...) will declaratively provide an array of .actions that an interpreter can then execute.
그래서 내 머리에 :
After event is sent to xstate, the next state of the statechart is determined based on current context before any actions are fired.
the documentation에 Clyde He의 사진
Reference
이 문제에 관하여(xstate에서 작업이 실행될 때), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/michalbryxi/when-are-actions-fired-in-xstate-matters-1n5d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)