在 xState 中将事件从一台机器发送到另一台机器时传递值
Pass values when sending events from one machine to another in xState
我有一个调用 todoMachine 的简单 chatMachine。 todoMachine 有一个名为 'OPENED_TASK_LIST_CREATOR' 的事件,我想从 chatMachine 调用它。我设法解决了这个问题。
export const chatMachine = Machine({
id: 'chat',
initial: 'idle',
context: { message: '' },
states: {
idle: {
invoke: {
id: 'todo',
src: todoMachine
},
on: {
COMMENT_SUBMITTED: {
actions: 'addComment'
},
COMMENT_STARRED: {
actions: [
(ctx, e) => console.log('e.payload', e.payload),
send('OPENED_TASK_LIST_CREATOR', {
to: 'todo'
})
]
}
}
}
}
});
我遇到的问题是我想随 'OPENED_TASK_LIST_CREATOR' 事件一起发送一个值。即我要打开的列表 ID。我已经设法在 COMMENT_STARRED
.
中的发送操作上方用 (ctx, e) => console.log('e.payload', e.payload),
记录了它
有没有办法将e.payload
传递给send('OPENED_TASK_LIST_CREATOR', { to: 'todo' })
,以便我可以在todoMachine中使用该值?
COMMENT_STARRED: {
actions: [
(ctx, e) => console.log('e.payload', e.payload),
send(
(ctx, e) => ({
type: 'OPENED_TASK_LIST_CREATOR',
payload: e.payload
}),
{
to: 'todo'
}
)
]
}
我有一个调用 todoMachine 的简单 chatMachine。 todoMachine 有一个名为 'OPENED_TASK_LIST_CREATOR' 的事件,我想从 chatMachine 调用它。我设法解决了这个问题。
export const chatMachine = Machine({
id: 'chat',
initial: 'idle',
context: { message: '' },
states: {
idle: {
invoke: {
id: 'todo',
src: todoMachine
},
on: {
COMMENT_SUBMITTED: {
actions: 'addComment'
},
COMMENT_STARRED: {
actions: [
(ctx, e) => console.log('e.payload', e.payload),
send('OPENED_TASK_LIST_CREATOR', {
to: 'todo'
})
]
}
}
}
}
});
我遇到的问题是我想随 'OPENED_TASK_LIST_CREATOR' 事件一起发送一个值。即我要打开的列表 ID。我已经设法在 COMMENT_STARRED
.
(ctx, e) => console.log('e.payload', e.payload),
记录了它
有没有办法将e.payload
传递给send('OPENED_TASK_LIST_CREATOR', { to: 'todo' })
,以便我可以在todoMachine中使用该值?
COMMENT_STARRED: {
actions: [
(ctx, e) => console.log('e.payload', e.payload),
send(
(ctx, e) => ({
type: 'OPENED_TASK_LIST_CREATOR',
payload: e.payload
}),
{
to: 'todo'
}
)
]
}