React Apollo graphql HOC 加载为假但没有数据字段

Posted

技术标签:

【中文标题】React Apollo graphql HOC 加载为假但没有数据字段【英文标题】:React Apollo graphql HOC loading is false but no data field 【发布时间】:2019-12-06 18:38:43 【问题描述】:

我正在尝试将数据存储在 apollo 缓存中,并通过 graphql HOC 在我的组件中获取这些数据

这里我初始化 Apollo Client 并将用户数据添加到 apollo 缓存中:

const cache = new InMemoryCache();

const client = new ApolloClient(
  cache,
  resolvers: 
);
cache.writeQuery(
  query: GET_CURRENT_USER,
  data: 
    userData: 
      id: 1,
      name: "Alexander",
      email: "email@domain.com"
    
  
);

const App = () => (
  <ApolloProvider client=client>
    <Main />
  </ApolloProvider>
);

这是我的 GET_CURRENT_USER 查询:

import  gql  from "apollo-boost";

export const GET_CURRENT_USER = gql`
  query getUserData($id: ID!) 
    userData @client 
      id
      name
      email
    
  
`;

在这里我将我的组件包装到 graphql HOC 中:

...
export default graphql(GET_CURRENT_USER)(ProfileScreen);

我正在将 props.data 属性检查到 ProfileScreen 组件的渲染方法中,它被触发了 2 次:

    错误:未定义; 加载:真; 没有 userData 字段

    错误:未定义; 加载:假; 没有 userData 字段

我还检查了 Apollo 缓存并存储了 userData 字段

环境:

    "apollo-boost": "^0.4.3", "react-apollo": "^2.5.8", "react-native": "0.60.4", "apollo-cache-inmemory": "^1.6.2", “反应”:“16.8.6”

【问题讨论】:

【参考方案1】:

通过将 __typename 字段添加到 userData 对象来修复

【讨论】:

以上是关于React Apollo graphql HOC 加载为假但没有数据字段的主要内容,如果未能解决你的问题,请参考以下文章

<Query> vs graphql Hoc,这是在 react apollo 中将 graphql 查询与组件挂钩的最佳方法

将 Apollo GraphQL HOC 模式与现有 HOC 结合使用

React-Apollo 错误:“...仅支持每个 HOC 的查询、订阅或突变”

使用 apollo graphql 对 firebase 身份验证做出反应

如何连续进行 graphql 调用?反应阿波罗

React Apollo 显示“react-apollo 仅支持每个 HOC 的查询、订阅或突变”错误