使用Apollo GraphQL与React Redux的最佳实践及数据存储疑问
关于Apollo GraphQL与Redux混用的问题解答
1. 未保存的待办事项能否存入Redux?当然可以
你之前听到的“不要混用”,核心是不要把Apollo已经缓存的后端同步数据再存入Redux——毕竟Apollo本身就有完善的缓存管理、请求重试、数据同步机制,重复存到Redux里只会增加冗余的状态维护工作,完全没必要。
但用户新增的未保存待办属于客户端临时状态,这类数据本来就是Redux的适用场景:
- 如果这个临时待办需要在多个组件间共享(比如跨页面编辑、侧边栏和主列表都要显示),用Redux管理非常合适;
- 如果只是单个组件内使用,也可以用React的
useState或useReducer,更轻量。
其他可选的存储方式还有:
- 组件内部状态(适合局部临时数据)
- 本地存储(
localStorage/sessionStorage,适合需要持久化的草稿,但要注意和状态管理工具同步)
2. 复杂应用能否针对不同数据分别使用Apollo和Redux?完全可行
在复杂应用里,你完全可以根据数据类型划分职责:
- 用Apollo管理后端同步的业务数据:比如已保存的待办、用户信息、订单列表这类和后端强绑定的数据,Apollo能帮你处理请求、缓存、自动更新,比手动用Redux写请求逻辑高效得多;
- 用Redux管理客户端专属状态:比如未提交的表单草稿、全局UI状态(主题、侧边栏展开状态)、多组件共享的临时交互状态(比如批量操作的选中项)。
举个实际场景:你的应用里,从后端拉取的已完成待办列表用Apollo缓存,而用户正在编辑的、还没提交的待办草稿用Redux存储,两者各司其职,完全不会冲突。
总结下来,关键是明确数据的归属:后端同步数据交给Apollo,客户端临时/UI状态交给Redux,避免重复维护状态就好。
内容的提问来源于stack exchange,提问作者Ry2254
相关产品推荐
相关产品推荐

