ApolloClient reducer 不是函数

Posted

技术标签:

【中文标题】ApolloClient reducer 不是函数【英文标题】:ApolloClient reducer is not a function 【发布时间】:2018-09-14 19:29:03 【问题描述】:

我正在使用 apolloClient 向 graphql 服务器发送请求。

然而,由于我的应用程序使用 Redux,我遵循此文档 apollo-redux 能够使用 Redux 实现 apollo 客户端。

这是我客户的代码:

const client = new ApolloClient();

const store = createStore(
  combineReducers(
    apollo: client.reducer(),
    // others
  )

然而,client.reducer() 行会引发错误

client.reducer 不是函数

我该如何纠正这个错误

【问题讨论】:

你用的是什么版本的阿波罗? 它是 2.1.1 - 最后一个 【参考方案1】:

由于从 2.0 开始,redux 没有被用作 Apollo 的缓存,您现在应该使用提供的 Apollo 存储:

import  ApolloProvider  from "react-apollo";

const App = () => (
  <ApolloProvider client=client>
    <div>
      <h2>My first Apollo app ?</h2>
    </div>
  </ApolloProvider>
);

见https://www.apollographql.com/docs/react/recipes/2.0-migration.html#redux

【讨论】:

但是 redux 商店呢?我应该修改我的所有应用程序以使用 apollo 商店而不是 redux 吗?

以上是关于ApolloClient reducer 不是函数的主要内容,如果未能解决你的问题,请参考以下文章

ApolloClient 不是构造函数(apollo-client with nodejs)

array.push 不是一个函数 - 当使用 reduce [重复]

ApolloClient 客户端的类型

Javascript中内建函数reduce的应用详解

Apollo 客户端:mutate 不是函数

将 mutate() 从 ApolloClient 移动到 React 组件的正确方法?