useMutation
参数
document: 包含突变操作的 GraphQL 文档。也可以是返回文档的函数。options: (默认值:null) 选项对象。也可以是返回选项对象的函数。variables: 变量对象。awaitRefetchQueries: 默认情况下,refetchQueries不会等待重新获取的查询完成,然后才解析突变Promise。这确保查询重新获取不会阻止突变响应处理(查询重新获取是异步处理的)。如果要等待重新获取的查询完成,然后才将突变标记为已解析,请将awaitRefetchQueries设置为true。clientId: 如果您提供了多个客户端,则应为此突变使用的客户端的 ID。context: 要传递给链接执行链的上下文。此上下文仅与突变一起使用。它不会与refetchQueries一起使用。重新获取的查询使用它们初始化时的上下文(因为初始上下文存储为ObservableQuery实例的一部分)。如果在重新获取查询时需要特定上下文,请确保在首次初始化/运行查询时对其进行配置(通过querycontext选项)。errorPolicy: 指定要为此操作使用的ErrorPolicy。noneallignore
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): 发生错误时调用的事件钩子。处理程序将使用以下内容调用:error和context,它是一个包含client(ApolloClient 实例)的对象。