Reactjs 有没有办法使用模板组件/页面与盖茨比一起创建动态slug?
我对盖茨比很陌生,我想知道是否可以创建自定义路由(slug)作为模板。用例将是:Reactjs 有没有办法使用模板组件/页面与盖茨比一起创建动态slug?,reactjs,gatsby,slug,strapi,Reactjs,Gatsby,Slug,Strapi,我对盖茨比很陌生,我想知道是否可以创建自定义路由(slug)作为模板。用例将是: 访问/articles/文章名称路线 服务组件Article.js使用文章的名称填充从API(即Strapi headless CMS)检索到的信息 是的,你可以。盖茨比有这方面的文件:。您需要创建页段塞:。您需要添加到您的gatsby config.js 我对Strapi几乎没有经验,所以您需要研究如何使用Strapi处理段塞创建 示例代码: gatsby-node.js exports.onCreateNod
/articles/文章名称
路线Article.js
使用文章的名称填充从API(即Strapi headless CMS)检索到的信息
是的,你可以。盖茨比有这方面的文件:。您需要创建页段塞:。您需要添加到您的
gatsby config.js
我对Strapi几乎没有经验,所以您需要研究如何使用Strapi处理段塞创建
示例代码:
gatsby-node.js
exports.onCreateNode = ({ node, getNode, actions }) => {
const { createNodeField } = actions;
if (node.internal.type === "The Nodes as defined by Strapi") {
const slug = createFilePath({ node, getNode, basePath: "The base paths as defined by Strapi" });
createNodeField({ node, name: "slug", value: slug });
}
};
exports.createPages = async function({ actions, graphql }) {
const { data } = await graphql(`
{
allStrapiArticle {
edges {
node {
id
title
content
}
}
}
}
`)
data.allMarkdownRemark.edges.forEach(edge => {
const slug = edge.node.fields.slug
actions.createPage({
path: slug,
component: require.resolve(`./src/templates/article-template.js`),
context: { slug: slug },
})
})
}
经过一些调查,我发现有一种更简单的方法可以使用。 您只需使用
warn
或npm
安装它,然后在gatsby config.js
中添加以下内容:
{
解析:`gatsby插件创建客户端路径`,
选项:{前缀:[`/articles/*`]},
},
使用Strapi处理slug非常容易,而且我希望不用GraphQL来管理它,因为我用REST做所有事情。你认为有可能吗?