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

时间:2017-03-27 04:35:00

标签: javascript reactjs redux redux-thunk apollo-client

在我的项目中, Redux Thunk 用于将所有异步功能保留在动作创建器中。

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

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

1 个答案:

答案 0 :(得分:4)

Apollo突变不会破坏redux thunk架构。如果您需要在发生突变后更新自己的Reducer,则从突变的thencatch内调度这些reducer的操作。 Apollo的graphql容器旨在取代异步redux中间件(thunk,sagas,epics),而不是破坏它。

适用于Apollo Client 1.0

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

更新:迁移到Apollo Client 2.0

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