守卫
守卫 是状态机在处理事件时检查的条件函数。如果条件为 true
,状态机将执行到下一个状态的转换。如果条件为 false
,状态机将继续检查其他条件以决定下一个状态。
受守卫保护的转换 是仅在其 守卫
评估为 true
时才启用的转换。守卫决定了转换是否可以启用。任何转换都可以是受守卫保护的转换。
守卫应该是纯的、同步的函数,返回 true
或 false
。
const feedbackMachine = createMachine(
{
// ...
states: {
form: {
on: {
'feedback.submit': {
guard: 'isValid',
target: 'submitting',
},
},
},
submitting: {
// ...
},
},
},
{
guards: {
isValid: ({ context }) => {
return context.feedback.length > 0;
},
},
},
);