在 xstate 中嵌套 属性 赋值?
Nested property assign in xstate?
我知道您可以像这样使用 assign
动作创建器:
const setFoo = assign({
foo: (context, event) => "someValueBasedOnContextAndEvent",
});
但是你能这样用吗?
const setFoo = assign({
foo: {
bar: (context, event) => "someValueBasedOnContextAndEvent",
}
});
当然,不删除 foo
的所有其他嵌套值。
David Kourship(xstate 的创建者)answered Spectrum 上的这个:
No you cannot, but you can make a custom assign function that does that.
所以我们基本上必须创建一个自定义化简器,它有选择地只更新嵌套对象中的一个字段。
我想你可以尝试这样的事情:
const setFoo = assign({
foo: (context, event) => {
...context,
foo: {
...context.foo,
bar: "someValueBasedOnContextAndEvent"
}
},
});
您将用所需值和 context
替换 foo.bar
值,其余 context.foo
保持不变
我知道您可以像这样使用 assign
动作创建器:
const setFoo = assign({
foo: (context, event) => "someValueBasedOnContextAndEvent",
});
但是你能这样用吗?
const setFoo = assign({
foo: {
bar: (context, event) => "someValueBasedOnContextAndEvent",
}
});
当然,不删除 foo
的所有其他嵌套值。
David Kourship(xstate 的创建者)answered Spectrum 上的这个:
No you cannot, but you can make a custom assign function that does that.
所以我们基本上必须创建一个自定义化简器,它有选择地只更新嵌套对象中的一个字段。
我想你可以尝试这样的事情:
const setFoo = assign({
foo: (context, event) => {
...context,
foo: {
...context.foo,
bar: "someValueBasedOnContextAndEvent"
}
},
});
您将用所需值和 context
替换 foo.bar
值,其余 context.foo
保持不变