根据状态的类型匹配工具,而不是默认地使用全局存储。大多数"全局状态"问题实际上是用错了工具。
为什么这很重要
text
Local UI state (toggle, input) → useState / useReducer
Shared, low-frequency (theme, user) → Context
Server/API data → React Query / SWR (NOT a global store)
Complex global client state → Zustand / Jotai / Redux Toolkit
URL-shareable state (filters, page) → the URL (search params)
最重要的洞察:server state ≠ client state
来自 API 的数据是远程数据的缓存,不是你拥有的状态。将其放在 Redux 中意味着你必须手动处理加载、缓存、重新获取和失效——痛苦且容易出错。Server-state 库能做到这一切:
jsx
{ data, isLoading } = ({ : [], : getTodos });
