【发布时间】:2020-02-11 10:11:53
【问题描述】:
我正在使用这个tutorial 创建一个将使用 Markdown 页面的 gatsby 博客。
我正在尝试创建一个“post-repeater”组件,它将遍历我的所有帖子并使用看起来像这样的 frontmatter 创建指向它们的链接。
---
path: "/blog/my-first-post"
date: "2019-05-04"
title: "My first blog post"
---
我有一个正确提取数据的 graphQl 查询。
我的组件看起来像这样。
import React from "react"
import "../styles/post-repeater.scss"
import { graphql, Link } from "gatsby"
export default function PostRepeater({postQuery}){
console.log('my data:',postQuery);
return(
<>
{postQuery.map(instance =>
<div className="post">
<h2>{instance.title}</h2>
<span className="datePosted">{instance.date}</span>
<span className="readTime"></span>
<p></p>
<Link to={instance.path}>Read More</Link>
<hr />
</div>
)}
</>
)
}
export const postQuery = graphql`
query MyQuery {
allMarkdownRemark {
edges {
node {
frontmatter {
path
title
date
}
}
}
}
}
`
如果我从 PostRepeater 组件中放置一个 postQuery 的 console.log,它会以未定义的形式返回。因此,即使我遵循上面教程中的相同布局,组件似乎也永远不会获取数据。
如果我从组件外部放置console.log('data', postQuery);,我会在控制台中得到以下信息。
数据 2575425095
我做错了什么?
【问题讨论】:
-
试着做一个可生产的例子,How to create a Minimal, Reproducible Example 你有一个 gatsby 模板:codesandbox.io/s/github/gatsbyjs/gatsby-starter-default
-
我把它上传到了 netlify。我试图创建一个最小的可重现示例,但我无法让 allMarkdownRemark 插件在代码和框上工作。无论如何,这是网址。 codesandbox.io/embed/gatsby-starter-default-prifj 这是 netlify 实例的 URL hopeful-shirley-490d3a.netlify.com 我希望对您有所帮助。
标签: javascript reactjs graphql gatsby