在我的项目中,Redux Thunk用于将所有异步函数保存在 action creators 中。
现在我正在尝试将 Apollo GraphQL 添加到我的项目中,一切正常,除了在我的功能组件中添加突变并在那里调用它们时,它会破坏 redux thunk 架构。
如何解决?我想我可以创建新的动作创建方法并将突变传递给它们,但它很快就会变成样板,这对我来说似乎不是一个好的解决方案。
在我的项目中,Redux Thunk用于将所有异步函数保存在 action creators 中。
现在我正在尝试将 Apollo GraphQL 添加到我的项目中,一切正常,除了在我的功能组件中添加突变并在那里调用它们时,它会破坏 redux thunk 架构。
如何解决?我想我可以创建新的动作创建方法并将突变传递给它们,但它很快就会变成样板,这对我来说似乎不是一个好的解决方案。
Apollo 突变不会破坏 redux thunk 架构。如果您需要在突变后更新自己的减速器,则从突变的then
or中分派这些减速器的操作catch
。Apollo 的graphql
容器旨在替代异步 redux 中间件(thunk、sagas、epics),而不是破坏它。
对于 Apollo 客户端 1.0
如果您愿意,您还可以将自己的 reducer 连接到 Apollo 调度的相同操作(APOLLO_MUTATION_INIT、APOLLO_MUTATION_RESULT 等)。只需确保您将 apollo 商店与您自己的商店集成在一起即可。请参阅http://dev.apollodata.com/react/redux.html。
更新:迁移到 Apollo Client 2.0
Apollo Client 2.0 移除了使用 redux 作为其缓存(存储)的依赖。如果您仍然希望能够在减速器中使用 1.0 样式的操作,可以使用此链接https://www.npmjs.com/package/apollo-link-redux(自述文件中的示例用法)。