Graphql 如何从盖茨比中的降价创建像页面一样的组件?
我正在学习盖茨比,并试图扩展他们的教程,这给你留下了一个类似博客的网站。每个帖子都是从标记文件生成的,使用Graphql查询,并通过onCreateNode和createPages进行处理 我想为作者bios创建可以包含在这些生成页面中的标记文件。然后,如果一个bio发生了更改,那么标记将在一个地方更改,而不是手动更改该作者编写的每个标记文件 是否有可能为组件生成类似的工作流?或者我可以将作者的姓名/bio文件名传递给执行查询并处理结果标记的组件吗Graphql 如何从盖茨比中的降价创建像页面一样的组件?,graphql,markdown,gatsby,Graphql,Markdown,Gatsby,我正在学习盖茨比,并试图扩展他们的教程,这给你留下了一个类似博客的网站。每个帖子都是从标记文件生成的,使用Graphql查询,并通过onCreateNode和createPages进行处理 我想为作者bios创建可以包含在这些生成页面中的标记文件。然后,如果一个bio发生了更改,那么标记将在一个地方更改,而不是手动更改该作者编写的每个标记文件 是否有可能为组件生成类似的工作流?或者我可以将作者的姓名/bio文件名传递给执行查询并处理结果标记的组件吗 编辑:考虑到这一点,我不认为我的bios相对于
编辑:考虑到这一点,我不认为我的bios相对于组件降价有多大好处。如果有一个用于格式的组件AuthorBio和几个组件(如JohnDoeBio或JaneSmithBio)返回一个AuthorBio,并在道具中传递一些信息以供呈现,这会是一种糟糕的形式吗?我很确定我可以从我的降价中引用这些组件,或者让我的模板根据frontmatter选择它们,尽管这可能会导致一个大的切换…我有完全相同的思考过程!我就是这样解决的: BlogPostTemplate.jsx
<Layout>
<ShortBio {...authorData} /> // show the author bio on top of the blog post
<div
className="blog-post"
dangerouslySetInnerHTML={{ __html: html }} // your markup as HTML
/>
</Layout>
使用Gatsby和GraphQL的强大功能,通过标记中的元数据确定作者。看看GraphQL查询:我定义了一个author标记,因此我可以在博客文章的标记中动态设置一个author
或者我可以将作者的姓名/bio文件名传递给
是否执行查询并处理结果降价
是的,在降价的正面使用作者标签
---
title: Hello World
date: "2018-01-15"
author: "Solid Snake"
---
编辑:我已经考虑过了,我看不到降价有什么好处
对于我的bios vs组件。有一个组件会是一种不好的形式吗
AuthorBio的格式和一些组件,如JohnDoeBio或
它返回一个AuthorBio,并传入一些信息
要为他们渲染的道具?我相当肯定我可以参考这些
从我的降价中选择组件,或者让我的模板根据
前沿问题,虽然这可能会导致一个大的转变
如果您可以自信地声明作者的数量仍然很小,那么创建几个静态作者组件就可以了。要务实。照你说的做
export const blogQuery = graphql`
query ($slug: String!) {
blog: markdownRemark(fields: {slug: {eq: $slug}}) {
html
frontmatter {
title
date(formatString: "DD MMMM YYYY")
author
}
excerpt(pruneLength: 165)
fields {slug}
wordCount {
words
}
}
}
`;
---
title: Hello World
date: "2018-01-15"
author: "Solid Snake"
---