Учитывая опубликованный пример кода, я не уверен, что вы подразумеваете под "количественными данными в foo". Данные, относящиеся к поведению машины, могут храниться в свойстве context
машины или в свойстве meta
состояния. Для перехода в состояние bar
и установите предупреждение, вам может понадобиться что-то вроде:
const sm = Machine({
initial: 'baz',
context: { wasWarned: false },
on: {
'WARNING': {
target: 'bar',
action: 'setWarning'
}
},
states: {
baz: {},
bar: {}
}
}, {
actions: {
setWarning: assign({ warning: true })
}
})
Это означает: когда машина получает событие 'WARNING', переходите в состояние bar
И немедленно прежде всего обновить контекст.
Действия запускаются не сразу. Вместо этого объект State, возвращаемый из machine.transition(...), декларативно предоставляет массив .actions
, который затем может выполнить интерпретатор.
переход будет включен после< /strong> охрана пройдена.
Другой пример кода, который может оказаться полезным в зависимости от того, чего вы хотите достичь:
const sm = Machine({
initial: 'pending',
context: { wasWarned: null },
states: {
pending: {
on: {
'': [
{target: 'bar', cond:'wasWarned'},
{target: 'baz', cond: 'otherCond'}
]
}
},
bar: {},
baz: {}
},
guards: {
wasWarned: (ctx) => ctx.wasWarned
}
})
person
Tdk
schedule
09.01.2020