Условные переходы и Guards
Условные переходы/guards - это механизм в lite-fsm, который позволяет определить логику перехода между состояниями в зависимости от определенных условий.
Что такое Guard?
Guard - это просто условие, которое автомат проверяет при обработке события. Если условие возвращает true, автомат выполняет переход в следующее состояние. Если условие возвращает false, автомат остается в текущем состоянии или может выполнить альтернативный переход.
В lite-fsm guards реализуются через функцию reducer, которая предоставляет полный контроль над тем, как события преобразуются в изменения состояния автомата.
import { createMachine } from 'lite-fsm';
const feedbackMachine = createMachine({
config: {
form: {
'submit': 'submitting',
},
submitting: {
// другие переходы
},
},
initialState: 'form',
initialContext: {
feedback: ''
},
reducer: (s, action, { nextState }) => {
// Guard: проверяем условие, что отзыв не пустой
if (action.type === 'submit' && s.context.feedback.length === 0) {
// Если условие не выполнено — не меняем состояние и выходим
return;
}
// Условие выполнено — переходим в следующее состояние и обновляем контекст
s.state = nextState;
s.context = {
...s.context,
...action.payload
}
}
});Last updated on