【发布时间】:2020-07-22 14:44:46
【问题描述】:
对于本博客中的每篇文章,都有一个类别和标签数组,应作为元信息显示给读者。事情是我没有正确处理这个问题。
我一直在尝试使用以下代码映射这些数组:
<ul>
{frontmatter.map(({ categories }, i )=> (
<li>
<Link
className={`
(...tailwind classes...)
`}
key={i}
to={categories}>
{categories}
</Link>
</li>
))}
</ul>
...浏览器告诉我TypeError: frontmatter.map is not a function。
我猜我误解了 map 函数,但读到它我无法真正管理它。
查询是这样的:
export const pageQuery = graphql`
query($slug: String!) {
markdownRemark(fields: { slug: { eq: $slug } }) {
html
fields {
slug
}
frontmatter {
date(formatString: "DD MMMM YYYY")
path
title
featuredImage {
childImageSharp {
fluid(maxWidth: 800) {
...GatsbyImageSharpFluid
}
}
}
type
categories
tags
}
}
}
`
此外,每个类别都有一个页面显示其帖子。他们的蛞蝓是/categorias/[category-name]。因此,在上面用于映射它们的代码中,我可能需要设置 Link to="/categorias/${categories}" 或其他东西。不知道是什么,但由于我什至没有得到一个简单名称的列表,这是另一种问题。任何帮助都感激不尽。
【问题讨论】:
-
正如您在操场上看到的(括号类型)
frontmatter是一个对象,其中包含您可以迭代的categories和tags数组。frontmatter.tags.map((tag) => <Tag name={tag} key={tag} />) -
感谢您的评论@xadm。我看到了。正如罗宾的回应一样,它不起作用。我现在正在阅读它。
标签: arrays reactjs graphql gatsby graphql-js