GraphQL不返回错误但未定义

时间:2019-03-06 21:28:02

标签: graphql gatsby

已经搜索了一段时间。我正在使用Gatsby,但控制台或终端中没有错误,但值未定义。可能是因为“文章”下的第二个“数据”吗?

GraphiQL查询:

enter image description here

查询/组件代码:

import React, { Component } from 'react'
import { graphql } from 'gatsby'

// This query is executed at build time by Gatsby.
export const GatsbyQuery = graphql`
  {
    umdHub {
      articles {
        data {
          title
        }
      }
    }
  }
`

class ClientFetchingExample extends Component {
  render() {
    const {
      umdHub: { articles },
    } = this.props.data

    console.log(articles.title)
    return (
      <div style={{ textAlign: 'center', width: '600px', margin: '50px auto' }}>
        <h1>{articles.title} - Is the title of the article</h1>
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
      </div>
    )
  }
}

export default ClientFetchingExample

1 个答案:

答案 0 :(得分:1)

您已经完成一半了

const {
      umdHub: { articles },
    } = this.props.data

现在您有这样的这篇文章对象

articles: {
    data: [
        { 
          title: 'Learning to Listen'
        },
        { 
          title: 'Second Title'
        }
        ...
    ]
}

现在您需要遍历数据

import _ from 'lodash'
const data = _.get(articles, 'data', [])

_.map(data, title => {
    console.log({ title })
})

如果您只想第一个标题

const title = _.get(articles, 'data[0].title', 'default value or blank string')

这里lodash是一个现代的JavaScript实用程序库,提供模块化,性能和附加功能。