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

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

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

但是你可以这样用吗?

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

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

【问题讨论】:

    标签: state state-management xstate


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      我想你可以试试这样的:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-07
        • 1970-01-01
        相关资源
        最近更新 更多