GraphQL 和 ApolloProvider 和存储......它非常嵌套

Posted

技术标签:

【中文标题】GraphQL 和 ApolloProvider 和存储......它非常嵌套【英文标题】:GraphQL and ApolloProvider and store... its very nested 【发布时间】:2018-02-18 14:07:12 【问题描述】:

所以,我通过 ApolloProvider 传递商店

  <ApolloProvider store=store client=apolloClient>

现在,ApolloProvider 正在把它,商店,放在客户端。但它放置的是 store 对象,而不是实际的 reducer 对象。所以,我得到了以下内容,这对我来说似乎很奇怪..

client
   ---> store
  -----------> getState
  -----------> dispatch

但没有“状态”?我的意思是,确定我是否会调用 getState(),但这似乎与我通常在没有 Apollo 的情况下执行 redux 时完全不同。我得到了我的“状态树”……在这里,我得到了……

在使用带有 graphql 的 redux 时,“正常”或“最佳实践”是什么?

像这样访问 state 属性似乎有些过分:

if (this.props.client.state.getState().whatever.foo)

【问题讨论】:

【参考方案1】:

使用查询本地状态和 React Hooks,例如:

import gql from 'graphql-tag';
import  useQuery  from '@apollo/react-hooks';
//...
export default () => 
    const  data  = useQuery(gql('query GetTableFilter  selectedMall @client '));
    // ... do something with data.selectedMall

【讨论】:

以上是关于GraphQL 和 ApolloProvider 和存储......它非常嵌套的主要内容,如果未能解决你的问题,请参考以下文章

GraphQL 和 ReactJS 状态

初始化 ApolloProvider 后更新标头

ReactJs - 如何将 ApolloProvider 包装在 StatsigProvider 中?

React + ApolloProvider + Typescript = "JSX 元素类不支持属性" 错误

如何在每次测试之前重置或清除 ApolloProvider 的 useQuery 模拟?

ApolloProvider useQuery 组合不从 AWS AppSync 获取数据,在 React 项目中