javascript - 无法访问嵌套查询

标签 javascript reactjs graphql

我想在页面上渲染来自手动 API 的简单数据,但似乎我无法访问嵌套查询。

这就是我所拥有的:

import React from 'react';
import {
    gql,
    graphql,
} from 'react-apollo';

//access to queries and map function
const ChannelsList = ({ data: {loading, error, items }}) => {
  if (loading) {
    return <p>Loading ...</p>;
  }
  if (error) {
    return <p>{error.message}</p>;
  }

  return (
    <div className="channelsList">

      { items.map( itm => <div key={itm.id} className="channel">{itm.sku}</div> ) }
    </div>
  );
};

const channelsListQuery = gql`
  query ChannelsListQuery {
      allLinks {
        items {
          id
          sku
        }
      }
  }
`;

export default graphql(channelsListQuery)(ChannelsList);

不要介意这个“ channel ”名称,这是我用于自己的 api 的示例。问题是,所有包含“id、names、sku”等的查询都是“items”类型,对我来说它似乎无法访问它。 graphqli 服务器中的查询运行良好。所以,问题是 - 如何访问嵌套查询,以便我可以使用 map 并将其呈现在页面上?

架构结构:

const typeDefs = `
type Link {
    items: [itemapi]      
    }

    type itemapi {
        id: ID!
        sku: String!
        name: String!
    }
    type Query {
    allLinks: Link!
  }
`;

@OzySky 的@解决方案

const ChannelsList = ({ data: {loading, error, allLinks }}) => {
  if (loading) {
    return <p>Loading ...</p>;
  }
  if (error) {
    return <p>{error.message}</p>;
  }

  return (
    <div className="channelsList">
      { allLinks.items.map( aLitm => <div key={aLitm.id} className="channel">{aLitm.sku}</div> ) }
    </div>
  );
}; 

最佳答案

在react-apollo中,查询数据通过带有查询名称的prop传递。因此,在您的情况下,您将通过 data.allLinks 属性访问项目。

关于javascript - 无法访问嵌套查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48502492/

相关文章:

javascript - 渲染没有返回任何内容,但我不知道为什么

javascript - 除了绑定(bind)之外,任何其他解决方案都可以解决 promise 中的上下文问题

javascript - 如何仅在静态 URL 中插入元标记

javascript - 如何细化 Flow 中的综合事件?

javascript - 我如何获得数组的每个用户的存储库数量?

graphql - 你可以在 GraphQL 中嵌套片段吗?

javascript - 我如何从 vue-apollo 中访问 this.$route?

JavaScript - 随机输出字符

javascript - 使用 promise 内的数据更新 angular2 View /全局变量

reactjs - 您的测试套件必须至少包含一项测试