跳至内容

useMutation

参数

  • document: 包含突变操作的 GraphQL 文档。也可以是返回文档的函数。

  • options: (默认值:null) 选项对象。也可以是返回选项对象的函数。

    • variables: 变量对象。

    • awaitRefetchQueries: 默认情况下,refetchQueries 不会等待重新获取的查询完成,然后才解析突变 Promise。这确保查询重新获取不会阻止突变响应处理(查询重新获取是异步处理的)。如果要等待重新获取的查询完成,然后才将突变标记为已解析,请将 awaitRefetchQueries 设置为 true

    • clientId: 如果您提供了多个客户端,则应为此突变使用的客户端的 ID。

    • context: 要传递给链接执行链的上下文。此上下文仅与突变一起使用。它不会与 refetchQueries 一起使用。重新获取的查询使用它们初始化时的上下文(因为初始上下文存储为 ObservableQuery 实例的一部分)。如果在重新获取查询时需要特定上下文,请确保在首次初始化/运行查询时对其进行配置(通过 query context 选项)。

    • errorPolicy: 指定要为此操作使用的 ErrorPolicy

      • none
      • all
      • ignore
    • fetchPolicy: 指定要为此突变使用的 FetchPolicy

      • network-only: 从网络返回结果,如果网络调用不成功则失败,保存到缓存。
      • no-cache: 从网络返回结果,如果网络调用不成功则失败,不保存到缓存。
    • optimisticResponse: 表示此突变结果的对象,将在服务器实际返回结果之前乐观地存储。这最常用于乐观 UI,我们希望能够立即看到突变的结果,并在出现任何错误时更新 UI。

    • refetchQueries: 一系列将在此突变返回后重新获取的查询名称。如果您有一组可能受突变影响并需要更新的查询,这通常很有用。与其为此编写突变查询 reducer(即 updateQueries),不如简单地重新获取将受影响的查询,并在这些查询返回后获得一致的存储。

    • update: 此函数将在突变的生命周期中调用两次。如果提供了 optimisticResponse,则在最开始调用一次。从乐观数据创建的写入将在第二次调用此函数之前回滚,第二次调用是在突变成功解析时。此时,将使用实际的突变结果调用 update,并且这些写入不会回滚。

      提供 DataProxy 而不是让用户直接在 ApolloClient 上调用方法的原因是,所有写入都在更新结束时一起批处理,并且它允许回滚由乐观数据生成的写入。

      请注意,由于此函数旨在用于更新存储,因此它不能与 no-cache 获取策略一起使用。如果您有兴趣在突变完成后执行某些操作,并且不需要更新存储,请使用 mutate 返回的 Promise 而不是。

    • updateQueries: MutationQueryReducersMap,它是从查询名称到突变查询 reducer 的映射。简而言之,此映射定义了如何将突变的结果合并到您的应用程序当前正在观察的查询的结果中。

    • throws: 'auto' | 'always' | 'never': 默认情况下('auto'),如果您没有注册 onError 回调,mutate 将抛出错误。

返回

  • mutate(variables, overrideOptions): 使用此函数调用突变。

  • loading: 跟踪突变进度的布尔值 Ref

  • error: 保存任何发生的错误的错误 Ref

  • called: 布尔值 Ref,如果突变已被调用,则保存 true

  • onDone(handler): 突变成功完成时调用的事件钩子。处理程序将使用以下内容调用:result(突变结果)和 context,它是一个包含 client(ApolloClient 实例)的对象。

  • onError(handler): 发生错误时调用的事件钩子。处理程序将使用以下内容调用:errorcontext,它是一个包含 client(ApolloClient 实例)的对象。