如何管理 react + apollo 应用程序的状态

Posted

技术标签:

【中文标题】如何管理 react + apollo 应用程序的状态【英文标题】:How to manage state of react + apollo app 【发布时间】:2018-09-04 22:48:57 【问题描述】:

我将使用 apollo js 库从 graphql api 获取数据,但正如我从文档中看到的那样,它应该通过 props 直接在组件中插入获取数据。所以我的问题是我的应用程序是否需要一些状态管理工具,比如 redux?如果是,我该如何以或多或少的惯用方式做到这一点?

【问题讨论】:

一般来说,如果你使用graphql和apollo,你不需要任何状态管理“工具”。组件的状态已经足够好了。但是有时例如。您拥有高级多页表单,可以更轻松地将数据存储在例如。还原商店。但是你可以在没有状态管理库的情况下做到这一点。 是不是因为apollo的缓存机制我不需要状态? 恕我直言,主要是因为以非常好的方式将查询结果作为道具传递给组件,而且还有缓存机制等。 readFragment 可以替代 mapStateToProps 感谢您的澄清。 【参考方案1】:

从 Apollo Client v3 开始,这个问题的答案是:

使用 Apollo 客户端的反应变量,它像 Redux 一样不可变:https://www.apollographql.com/docs/react/local-state/managing-state-with-field-policies/#storing-local-state-in-reactive-variables

【讨论】:

这篇文章看起来不像是试图回答这个问题。这里的每一篇文章都应该明确地尝试回答这个问题;如果您有批评或需要澄清问题或其他答案,您可以在其下方直接post a comment(如这个)。请删除此答案并创建评论或新问题。请参阅:Ask questions, get answers, no distractions。

以上是关于如何管理 react + apollo 应用程序的状态的主要内容,如果未能解决你的问题,请参考以下文章

如何在本地网络上部署带有 apollo 客户端和 apollo-server 后端的 React 应用程序

如何使用 React-Hooks 和 Apollo Client 在 React-GraphQL 中实现搜索功能?

Apollo + React:数据未出现在 componentDidMount 生命周期中

如何使用 GQL 从 React 前端的 Apollo 客户端获取错误

React 身份验证会话管理

使用 Apollo 和 React 捕获身份验证失败后如何正确重定向