xstate中的嵌套属性分配?

Posted

技术标签:

【中文标题】xstate中的嵌套属性分配?【英文标题】:Nested property assign in xstate? 【发布时间】:2020-03-15 14:36:40 【问题描述】:

我知道您可以像这样使用assign 动作创建器:

const setFoo = assign(
  foo: (context, event) => "someValueBasedOnContextAndEvent",
);

但是你可以这样用吗?

const setFoo = assign(
  foo: 
    bar: (context, event) => "someValueBasedOnContextAndEvent",
  
);

当然,不会删除foo 的所有其他嵌套值。

【问题讨论】:

【参考方案1】:

David Kourship(xstate 的创建者)answered Spectrum 上的这个:

不,你不能,但你可以创建一个自定义的分配函数来做到这一点。

所以我们基本上必须创建一个自定义化简器,它选择性地只更新嵌套对象中的一个字段。

【讨论】:

【参考方案2】:

我想你可以试试这样的:

const setFoo = assign(
    foo: (context, event) => 
        ...context, 
        foo: 
            ...context.foo,
            bar: "someValueBasedOnContextAndEvent"
        
    ,
);

您将用所需值替换 foo.bar 值,contextcontext.foo 的其余部分保持不变

【讨论】:

以上是关于xstate中的嵌套属性分配?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用javascript在嵌套对象数组中按属性分配值

将类型分配给作为 Maybe 类型的嵌套类型的属性

嵌套受保护模型的“无法批量分配受保护属性”

使用质量分配在rails 4中添加带有复选框的嵌套属性

无法使用 Devise 批量分配受保护的属性以创建 has_many 嵌套模型

TypeError:'int'对象不支持嵌套python列表中的项目分配[关闭]