首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用参与者将数据从父计算机发送到子计算机

使用参与者将数据从父计算机发送到子计算机
EN

Stack Overflow用户
提问于 2020-02-28 14:25:53
回答 1查看 1K关注 0票数 1

我试图理解Actors能够将数据从同级组件传递到另一个组件。

我有这样的机器:父母和孩子。parentMachineGET转换中向childMachine发送一个success事件。一旦childMachine接收到event.value,就应该在其上下文中将其分配给user属性。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const [currentChild, sendChild] = useMachine(childMachine);

现在,在单击fetch后记录currentChild.context时,user属性为空。如何在依赖于parentMachine的组件中使用从childMachine接收的数据?

CodeSandbox:https://codesandbox.io/s/patient-frost-9lxoh

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const parentMachine = Machine({
  id: "parent",
  initial: "idle",
  context: {
    ref: undefined
  },
  states: {
    idle: {
      on: {
        FETCH: {
          target: "loading"
        }
      }
    },
    loading: {
      invoke: {
        id: "getUser",
        src: (_, event) => fetchUser(event.value),
        onDone: {
          target: "success",
          actions: assign({
            user: (_, event) => {
              return event.data;
            }
          })
        },
        onError: {}
      },
      entry: assign({
        ref: () => spawn(childMachine)
      })
    },
    success: {
      entry: (ctx, evt) => ctx.ref.send({ type: "GET", value: ctx.user })
    },
    failure: {} 
  }
});
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const childMachine = Machine(
  {
    id: "child",
    initial: "waitingForData",
    context: {
      user: []
    },
    states: {
      waitingForData: {
        on: {
          GET: {
            actions: [
              assign({
                user: (ctx, evt) => [...ctx.user, evt.value]
              }),
              "logger"
            ]
          }
        }
      }
    }
  },
  {
    actions: {
      logger: ctx => console.log(ctx.user)
    }
  }
);
EN

回答 1

Stack Overflow用户

发布于 2021-12-09 09:41:38

要做到这一点,您可以调用承诺、回调、可观察性和机器(正如前面提到的这里 ),当您调用机器时,您必须等待被调用的机器达到其最终状态,并且您将在onDone中接收结果,当您调用承诺时,您必须等到它完成,然后在onDone中接收结果。

这就是你要的是一个调用机器和承诺的例子。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60460041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文