GraphQL和Redux如何协同工作?

jan*_*nus 12 flux reactjs graphql redux react-redux

我想知道两者之间的关系.我很困惑,因为我认为它们都是管理状态的方法,而且似乎有重叠,所以我正在寻求一个概念上的区别,我可以应用以找出哪些信息可以保留在哪里以及如何使它们工作一起.有什么建议?

Rob*_*uch 15

您必须区分视图状态(例如搜索字段,弹出窗口,切换)和数据状态(例如远程API).Apollo主要用于数据状态,而Redux/MobX/React的本地状态在与Apollo Client结合使用时用于视图状态.如果不与Apollo Client一起使用,这些解决方案也可用于远程数据状态.但是,Apollo Client引入了apollo-link-state,它也可以用于本地视图状态.

  • 如果您的应用程序纯粹是远程数据驱动并使用GraphQL后端,则Apollo Client就足以满足您的应用程序需求.

  • 如果您的应用程序中有一些视图状态,请混合使用React的本地状态管理.

  • 如果您有多个视图状态,请使用Redux或MobX作为视图状态或尝试apollo-link-state.

也许这篇文章更深入地阐述了一些事情:结合Redux和Apollo.


Ada*_*nes 5

GraphQL只是告诉端点“这是我想要的数据”的一种方法。Redux是存储该数据的方法。从概念上讲,它们是完全分开的。

不过,对于集成它们,我们已经成功使用Apollo了(在他们删除Redux并推出自己的商店之前)。看一看这篇文章,从头开始,然后看看阿波罗从那里去了哪里,

  • 还有[graphql-normalizr](https://github.com/monojack/graphql-normalizr),可用于标准化graphql响应数据,然后将其持久化到存储中。 (2认同)