如何在apollo客户端中将Mutations链接在一起

Cal*_*son 4 apollo reactjs graphql react-apollo apollo-client

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

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

我注意到apollo Mutation组件有一个onCompleted回调,但我不知道如何使用这个回调来触发另一个突变或者是否正确解决我的问题.我还研究了将我的突变配对以立即发送它们,但似乎也不是解决方案.任何帮助,将不胜感激

小智 9

正如您所提到的,解决它的独特方法是对所有突变进行批处理,查看相关问题!

实际上,组合它们并不是那么糟糕,你可以这样做:

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>
)
Run Code Online (Sandbox Code Playgroud)

如果你正在努力解决问题,请告诉我!