如何使Redux Thunk和Apollo GraphQL协同工作

C.L*_*Lee 7 javascript reactjs redux redux-thunk apollo-client

在我的项目中,Redux Thunk用于将所有异步函数保留在动作创建器中.

现在我正在尝试将Apollo GraphQL添加到我的项目中,除了将突变添加到我的功能组件并在那里调用它之外,一切都运行良好,它打破了redux thunk架构.

怎么解决?我想我可以创建新的动作创建器方法并将突变传递给它们,但它很快就会变成样板,而这对我来说似乎不是一个好的解决方案.

ada*_*yee 4

Apollo 突变不会破坏 redux thunk 架构。如果您需要在突变后更新自己的减速器,请从突变内部thencatch突变中分派这些减速器的操作。Apollo 的graphql容器旨在取代异步 redux 中间件(thunk、sagas、epics),而不是破坏它。

对于 Apollo 客户端 1.0

如果需要,您还可以将自己的减速器连接到 Apollo 调度的相同操作(APOLLO_MUTATION_INIT、APOLLO_MUTATION_RESULT 等)。只需确保您将 apollo 商店与您自己的商店集成即可。请参阅http://dev.apollodata.com/react/redux.html

更新:迁移到 Apollo 客户端 2.0

Apollo Client 2.0 删除了对使用 redux 作为缓存(存储)的依赖。如果您仍然希望能够在您的reducers中使用1.0样式的操作,您可以使用此链接https://www.npmjs.com/package/apollo-link-redux(自述文件中的示例用法)。