Gatsby 在盖茨比中,有没有办法将所有具有相同基本url段的url路由到同一页面?
我希望site.com/shop/plp/、site.com/shop/plp/whatever-url和site.com/shop/plp/whater-url?id:value可以全部转到site.com/shop/plp,而不更改url或查询字符串 我目前正在使用盖茨比和@reach/routerGatsby 在盖茨比中,有没有办法将所有具有相同基本url段的url路由到同一页面?,gatsby,Gatsby,我希望site.com/shop/plp/、site.com/shop/plp/whatever-url和site.com/shop/plp/whater-url?id:value可以全部转到site.com/shop/plp,而不更改url或查询字符串 我目前正在使用盖茨比和@reach/router 有没有办法不用重定向就可以实现这一点?我可以通过实现这一点。基本上,它是内置在盖茨比中的前端解决方案,它使用pagessrc/pages/foo.js中的一个特定文件,用于匹配特定模式的所有UR
有没有办法不用重定向就可以实现这一点?我可以通过实现这一点。基本上,它是内置在盖茨比中的前端解决方案,它使用pages
src/pages/foo.js
中的一个特定文件,用于匹配特定模式的所有URL
我已经有了这个特定问题的工作版本-。尝试使用/app/..
导航到任何URL以从中获取数据-检查控制台输出。一些例子:
- 例如,只有当我首先导航到一个静态生成的页面(比如索引
),然后导航到/
时,它才起作用/app
- 它只适用于Github页面。在考虑使用AWS S3、谷歌托管等 之前进行测试。
- Advait的回答让我朝着正确的方向前进,希望添加实际代码和一个需要的额外更改
在gatsby-node.js中,在exports.createPages之前
exports.onCreatePage = ({ page, actions }) => {
const { createPage } = actions;
if (page.path === '/routing/') {
page.matchPath = '/routing/*';
createPage(page);
}
};
在pages/routing/index.js中
render() {
console.log(this.props);
return (
<Layout>
<Container>
<TestComponent />
</Container>
</Layout>
);
}
render(){
console.log(this.props);
返回(
);
}
以及在呈现实际页面之前防止404页面闪烁的最后一步,与此问题相关
在404.js中
const browser = typeof window !== "undefined" && window;
const NotFoundPage = () => {
return (
browser && (
<div>
<Layout>
<Container>
<h1>404 Page</h1>
</Container>
</Layout>
</div>
)
);
};
const browser=窗口类型!==“未定义”和&window;
const NotFoundPage=()=>{
返回(
浏览器&&(
404页
)
);
};
希望这能帮助别人你的问题太模糊了。没有重定向是什么意思?这不包括在内吗?Advait,这是正确的方向,谢谢,我想指出您与github repo 404的链接。除了客户端只路由需要更新的404.js之外,否则它会在渲染之前刷新404页面。呜呜!我很抱歉,它被设置为私人的。您现在可以看到代码了。这个解决方案依赖于404.js的加载——这就是为什么它不能在Zeit上工作,他们有一个自定义的404。我认为前端路由/客户端路由是这样工作的,在应用它们之前,您需要加载一些页面。在这种情况下,盖茨比必须包括所有页面上的内容,包括404.js。我在404.js中找到了与您相同的代码-它不应该闪烁。。。