"article seed # 0" => "article-seed-0" 导航到另一个 url 页面?
"article seed # 0" => "article-seed-0" to navigate to other Page with that url?
我正在使用gatsby-node
.
编译静态页面动态路由
const path = require('path');
const slugify = require('slugify');
const templateForContentType = {
articles: 'src/templates/ArticleDetail.tsx',
};
exports.createPages = async ({ graphql, actions }) => {
const { createPage } = actions;
.
.
.
result.data.allStrapiFinancialEducationContents.nodes.forEach((node) => {
const contentType = contentTypes[node.content[0].strapi_component];
createPage({
path: `/articles/${slugify(node.title, {
lower: true,
})}`,
component: path.resolve(templateForContentType),
context: {
id: node.id,
},
});
});
};
gatsby 使用 .title
属性
编译静态文件
[
{title:"article-seed-0",
{title:"article-seed-1"
]
article-seed-0
...
article-seed-n
当我尝试导航到另一个页面时,它形成了一个 url 像这样:
const {title:"article seed # 0" }
<Link to={article.title}>
这是结果:
Article%20Seed%20#0
数据进入后端,是否有任何实用的方法可以将任何类型的标题添加到 url 可以与 gatsby
编译这些静态文件的方式相关联的约定中?
Gatsby 使用给定的 path
:
编译静态文件
path: `/articles/${slugify(node.title, {lower: true,})}`,
因此,如果您使用 slugify
将标题 (node.title
) 转换为有效路径,它与 Gatsby 无关,但 slugify
,它正在删除#
在中间添加一个连字符 (-
)(实际上,它是从给定的字符串创建一个 slug)。
如果您的 Link
没有正确的目标 URL,只需以同样的方式使用 slugify
:
<Link to={slugify(article.title, {lower:true})}>
我正在使用gatsby-node
.
const path = require('path');
const slugify = require('slugify');
const templateForContentType = {
articles: 'src/templates/ArticleDetail.tsx',
};
exports.createPages = async ({ graphql, actions }) => {
const { createPage } = actions;
.
.
.
result.data.allStrapiFinancialEducationContents.nodes.forEach((node) => {
const contentType = contentTypes[node.content[0].strapi_component];
createPage({
path: `/articles/${slugify(node.title, {
lower: true,
})}`,
component: path.resolve(templateForContentType),
context: {
id: node.id,
},
});
});
};
gatsby 使用 .title
属性
[
{title:"article-seed-0",
{title:"article-seed-1"
]
article-seed-0
...
article-seed-n
当我尝试导航到另一个页面时,它形成了一个 url 像这样:
const {title:"article seed # 0" }
<Link to={article.title}>
这是结果:
Article%20Seed%20#0
数据进入后端,是否有任何实用的方法可以将任何类型的标题添加到 url 可以与 gatsby
编译这些静态文件的方式相关联的约定中?
Gatsby 使用给定的 path
:
path: `/articles/${slugify(node.title, {lower: true,})}`,
因此,如果您使用 slugify
将标题 (node.title
) 转换为有效路径,它与 Gatsby 无关,但 slugify
,它正在删除#
在中间添加一个连字符 (-
)(实际上,它是从给定的字符串创建一个 slug)。
如果您的 Link
没有正确的目标 URL,只需以同样的方式使用 slugify
:
<Link to={slugify(article.title, {lower:true})}>