用途:在多个乐观 mutation 可能并发重叠时,保证每个 mutation 有独立标识与限定范围的数据失效,避免某个 mutation 的回滚或 invalidate 抹掉另一个仍在进行的乐观更新。
主要能力与用法:
- 作用域相关 mutation:在 useMutation 中设置 mutationKey,如 ['items'];onMutate 中先 cancelQueries 再读取并写入对应 queryKey 缓存,返回 previousItem 作为回滚上下文。
- 回滚:onError 使用 variables.id 定位并恢复 context.previousItem。
- 限定失效:onSettled 中命令式判断 queryClient.isMutating({ mutationKey: ['items'] }) === 1 时才 invalidateQueries,从而跳过在途乐观 mutation 期间的中间失效。
- 渲染待处理变量:用 useMutationState 按 mutationKey、status: 'pending' 过滤,select 返回
${mutation.state.submittedAt}:${mutation.state.variables},submittedAt 用于区分变量相同的多个待处理 mutation。 - 列表乐观更新需遵循当前筛选条件:更新后调用 filter(item => matchesFilters(item, filters)),与服务端行为一致;待处理行使用 submittedAt 作为稳定 key。
限制:资料未提供安装命令、版本要求、官方文档地址或更多 API 细节,以上仅为该技能给出的模式与正误示例。