如何在Apollo客户端中将突变链接在一起 [英] How to chain together Mutations in apollo client

查看:91
本文介绍了如何在Apollo客户端中将突变链接在一起的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在状态中存储了一堆信息,我需要使用突变将其传递到我的graphQL服务器,但是我需要在调用下一个突变之前使用每个突变的结果,因为我需要:

I have a bunch of information stored in my state that I need to pass to my graphQL server using mutations, but I need to use the results of each mutation before I call the next one since I need to:

  • 在数据库中创建一个新对象
  • 使用为该对象生成的ID创建另一个对象
  • 修改原始对象以存储第二个对象生成的ID

我注意到apollo Mutation组件具有一个onCompleted回调,但是我不知道如何使用此回调来触发另一个突变,或者这是否是解决我的问题的正确方法.我还研究了批量处理突变以一次全部发送出去,但似乎也不是解决方案.任何帮助将不胜感激

I noticed that apollo Mutation components have an onCompleted callback, but I don't know how to use this callback to fire off another mutation or whether it's the right way solve my problem. I also looked into batching my mutations to send them all at once but it doesn't seem like that is the solution either. Any help would be appreciated

推荐答案

如前所述,解决此问题的独特方法是批量处理所有突变,请查看

As you've mentioned, the unique way to solve it is batching all the mutations, check out the issue related!

实际上,编写它们并不坏,您可以执行以下操作:

Actually, it's not that bad to compose them, you could do something like this:

const handleClick = async (mutation1Fn, mutation2Fn, mutation3Fn) => {
  const data1 = await mutation1Fn()
  const data2 = await mutation2Fn()
  const data3 = await mutation3Fn()
}

const Mutations = () => (
  <Composer
    components={[
      <Mutation mutation={mutation1} />,
      <Mutation mutation={mutation2} />,
      <Mutation mutation={mutation3} />
    ]}
  >
    {([mutation1Fn, mutation2Fn, mutation3Fn]) => (
      <button
        onClick={() => handleClick(mutation1Fn, mutation2Fn, mutation3Fn)}
      >
        exec!
      </button>
    )}
  </Composer>
)

让我知道您是否正在为某事而苦苦挣扎!

Let me know if you're struggling with something!

这篇关于如何在Apollo客户端中将突变链接在一起的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆