问题描述
我有一个简单的chatMachine,它调用todoMachine. todoMachine有一个名为"OPENED_TASK_LIST_CREATOR"的事件,我想从chatMachine调用该事件.我设法弄清楚了.
I have a simple chatMachine that invokes a todoMachine. The todoMachine has an event called 'OPENED_TASK_LIST_CREATOR' which I want to invoke from chatMachine. I've managed to figure this out.
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
中的send操作上方使用(ctx, e) => console.log('e.payload', e.payload),
记录了它.
The problem I am having is that I want to send a value along with the 'OPENED_TASK_LIST_CREATOR' event. Namely the list id I want opened. I have managed to log it with (ctx, e) => console.log('e.payload', e.payload),
just above the send action in COMMENT_STARRED
.
是否可以将e.payload
传递给send('OPENED_TASK_LIST_CREATOR', { to: 'todo' })
,以便我可以使用todoMachine中的值?
Is there a way to passe.payload
to send('OPENED_TASK_LIST_CREATOR', { to: 'todo' })
so that I can use the value in 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'
}
)
]
}
这篇关于在xState中将事件从一台计算机发送到另一台计算机时传递值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!