如果某个查询的 cacheTime 已过期但仍有活跃组件引用,它会被保留吗?
围绕“如果某个查询的 cacheTime 已过期但仍有活跃组件引用,它会被保留吗”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明只要存在活跃订阅者,即使 cacheTime 到期也不会立即删除。
TanStack Query专题面试题第 1 页,显示第 1–30 题,共找到 30 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
围绕“如果某个查询的 cacheTime 已过期但仍有活跃组件引用,它会被保留吗”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明只要存在活跃订阅者,即使 cacheTime 到期也不会立即删除。
围绕“如何配置一个查询,在 10 秒后自动取消未完成的请求”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明使用 timeout 选项设置 10000 毫秒。
围绕“在 refetch 之前,如何确保之前的请求被取消”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明使用 shouldCancelRefetch 选项控制。
围绕“unmount 时自动取消请求的行为是否总是安全?有哪些潜在风险”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明可能导致响应延迟或状态不一致,尤其在快速切换组件时。
围绕“在 SSR 场景中,hydrate 与 initialData 之间如何协同工作”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 hydrate 会将服务器端渲染的数据注入客户端缓存,initialData 仅用于初始显示。
围绕“客户端如何在页面加载后安全地执行 hydrate”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明使用 useHydrate 仅在 mount 后执行,避免重复水合。
围绕“如果客户端 hydrate 时发现缓存已存在,会发生什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 hydrate 会覆盖已有缓存,避免状态不一致。
围绕“infiniteQuery 何时开始加载下一页数据”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明在用户滚动到底部或调用 fetchNextPage 时触发。
围绕“在 infiniteQuery 中,如何正确传递分页参数以避免重复请求”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明使用 pageParam 作为查询键的一部分,并确保其随每页递增。
围绕“如何在用户滚动前预加载下一页数据”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明使用 prefetchInfiniteQuery 配合 scroll threshold。
围绕“invalidateQueries({ type: 'all' }) 是否会中断正在进行的请求”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明不会中断正在运行的请求,仅阻止新请求启动。
围绕“当多个查询共享相同的基础 key 时,invalidate 会如何影响它们”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明若子键未明确指定,则只覆盖父级匹配项。
围绕“refetch 与 invalidate 有何区别?它们各自触发的条件是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分 invalidate 仅改变状态而不请求,refetch 才真正发起请求。
围绕“在乐观更新场景下,invalidate 操作是否会影响用户看到的临时数据”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 invalidate 仅标记查询为过期,不影响已更新的本地状态。
围绕“如何通过 predicate 函数精准控制哪些查询应被无效化?请给出具体示例”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明使用函数判断 queryKey、status、variables 等字段以实现细粒度控制。
围绕“在乐观更新中,如果服务端返回错误,是否可以继续保留本地更改”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明默认不会保留,需显式处理异常并决定是否提交或回滚。
围绕“在乐观更新中,为何必须手动修改本地状态而不是依赖 query data”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 query data 仍为旧值,不能用于即时反馈,必须先更新应用状态。
围绕“当多个客户端同时进行乐观更新时,如何解决冲突”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明此类情况需由业务层处理,如版本号校验或最后写入胜出。
围绕“useMutation 与 optimisticUpdate 配合时,如何确保数据一致性”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明应在 mutate 函数内部先更新本地状态,再调用 API 并处理结果。
围绕“为何推荐使用数组而非对象作为查询键的结构?在什么情况下应选择对象”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须对比数组的确定顺序与对象键名无序带来的缓存歧义风险。
围绕“查询键中的依赖项变化是否一定导致查询重新执行?为什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释依赖项变更仅影响键值而不会自动触发查询重执行,需配合 useQuery 触发条件。
围绕“当查询键包含非序列化对象时,TanStack Query 如何处理其缓存键的生成”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释对象属性顺序和嵌套结构对键值串化的决定作用。
围绕“TanStack Query 中查询键(Query Key)的结构设计如何影响缓存命中与性能”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明数组形式查询键中不同元素类型对缓存唯一性的影响。
围绕“retry 为函数时,如何根据错误类型决定是否重试”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明返回 true 表示重试,否则跳过。
围绕“retryDelay 为 (attemptIndex) => attemptIndex * 1000 时,第 2 次”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明第 2 次重试在第一次失败后 1000 毫秒触发。
围绕“当 retryAttempts 超过最大重试次数后,query state 会变成什么状态”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明状态变为 'error'。
围绕“在某些条件下,如何让特定错误不再触发重试”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明通过 retry 函数返回 false 来跳过重试。
围绕“当查询处于“过期”但尚未失效时,再次访问是否会触发网络请求”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明此时仍返回缓存数据且不会主动发起请求,除非显式刷新或强制更新。
围绕“设置 staleTime 为 5 分钟后,查询何时开始自动刷新”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释从上次成功获取数据起算,5分钟后进入“过期”状态并可自动刷新。
围绕“当 staleTime 为 0 且 queryKey 不变时,自动刷新是否仍可能触发”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明虽然立即过期,但只有在组件重新挂载或显式调用 refetch 时才刷新。