将 redux 客户端从 REST 转换为 GraphQL Apollo?

Posted

技术标签:

【中文标题】将 redux 客户端从 REST 转换为 GraphQL Apollo?【英文标题】:Converting redux client from REST to GraphQL Apollo? 【发布时间】:2017-03-08 19:57:21 【问题描述】:

我有这个获取数据的 rest 应用程序,带有用于 redux 的 thunk + promise 中间件:

export const fetchVenues = () => (
    type: 'FETCH_VENUES',
    payload: axios.get('http://localhost:3000/mock/venues'),
);

来自这里的数据进入存储,组件使用从那里获取的数据。

我可以用 graphql 查询或其他东西交换“有效负载”中的其余请求吗?

让我困惑的是,Redux 说:“数据存在于存储中,只能通过操作来更改”,但 Apollo 将数据直接绑定到组件。 我已经制作了一个 GraphQL API,在 graphiql devtool 中运行良好,但是在阅读 this article 之后,我对它在客户端中的处理方式有点困惑。

【问题讨论】:

【参考方案1】:

我的理解是,在内部,apollo 使用的是 redux。基本上,它使您可以将查询与组件搭配使用,并将相关数据 + 函数作为道具注入(连接)。它还通过在请求完成时更新缓存/存储来为您管理存储。

你可以看到 ApolloProvider 是一个非常强大的 redux 提供者:https://github.com/apollostack/react-apollo/blob/01425b3df5f05e7f389b36f3385433c89a39977b/src/ApolloProvider.tsx

希望对你的理解有所帮助。

【讨论】:

以上是关于将 redux 客户端从 REST 转换为 GraphQL Apollo?的主要内容,如果未能解决你的问题,请参考以下文章

如何正确地从 ReactJS + Redux 应用程序进行 REST 调用?

从解析服务器将对象转换为 fullJSON 的优缺点

如何使用 GraphQL 的 Apollo 客户端将获取的数据存储到 Redux 的存储中

分分钟将 REST 转换为 GraphQL

将 JObject 转换为动态对象

harbor rest api 转graphql api