Reactjs 有没有办法使用模板组件/页面与盖茨比一起创建动态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

我对盖茨比很陌生,我想知道是否可以创建自定义路由(slug)作为模板。用例将是:

  • 访问
    /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做所有事情。你认为有可能吗?