有没有办法从突变更新函数中获取变量?

时间:2019-04-11 22:18:53

标签: apollo react-apollo

使用Apollo的Mutation组件时,有什么方法可以从更新回调函数内部获取突变的变量吗?

<Mutation
  mutation={mutation}
  update={(cache, result) => {
    // is there any way to get the mutation variables here?
  }}
>
  {mutate => <MyComponent onSubmit={mutate} />}
</Mutation>

1 个答案:

答案 0 :(得分:1)

不幸的是,该信息没有传递给更新功能。您需要将Mutation组件移至MyComponent内(或将状态 up 移出MyComponent),以便可以将变量直接传递给Mutation组件,而不是mutate函数:

<Mutation
  mutation={mutation}
  variables={{ ... }}
  update={()=> {
    // Now whatever values you used for the mutation will also be available here
  }}
>
{mutate => {
  // mutate can be used without passing any variables to it
}}
</Mutation>

您可能有一个独特的用例,但是通常我们不必首先担心变量。通常,插入,删除和更新突变会返回插入/删除/更新的对象,并且有效载荷足以更新缓存。如果您的突变是返回突变的数据,并且您有能力更改API,则可以考虑这样做,因为这样做也会有所帮助。