我知道您可以像这样使用assign
动作创建者:
const setFoo = assign({
foo: (context, event) => "someValueBasedOnContextAndEvent",
});
但是您可以这样使用它吗?
const setFoo = assign({
foo: {
bar: (context, event) => "someValueBasedOnContextAndEvent",
}
});
当然,不删除foo
的所有其他嵌套值。
答案 0 :(得分:0)
David Kourship(xstate的创建者)answered在Spectrum上是这样的:
没有,您不能,但是您可以创建一个自定义的赋值函数来完成此任务。
因此,我们基本上必须创建一个自定义的reducer,以选择性地更新嵌套对象中的一个字段。
答案 1 :(得分:0)
我认为您可以尝试这样的事情:
const setFoo = assign({
foo: (context, event) => {
...context,
foo: {
...context.foo,
bar: "someValueBasedOnContextAndEvent"
}
},
});
这将用所需的值替换foo.bar
的值,并且context
和context.foo
的其余部分保持不变