xstate - 在 xState 中将事件从一台机器发送到另一台机器时传递值
问题描述
我有一个调用 todoMachine 的简单聊天机器。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。我已经设法(ctx, e) => console.log('e.payload', e.payload),
在发送操作上方记录了它COMMENT_STARRED
。
有没有办法传递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'
}
)
]
}
推荐阅读
- devexpress - DevExpress XAF:获取子集合的集合
- html - 将绝对定位的 DIV 与 IE11 中 TD 元素内的左值垂直对齐
- knex.js - 无法读取未定义的属性“事务”
- unit-testing - 64位除法的单元测试
- reactjs - Redux 表单 React 中的两个提交按钮
- react-native - 如何在本机反应中显示图像的宽度和高度
- mysql - MySQL MATCH AGAINST 没有给出结果
- javascript - 谷歌图表背景
- mysql - 如何使用 mySQL 数据库中的数据填充 Google 折线图。(单个文件/内联解决方案)
- flutter - Flutter 无法运行项目