使用 gatsby 以编程方式导航到动态 url

Posted

技术标签:

【中文标题】使用 gatsby 以编程方式导航到动态 url【英文标题】:Programmatically navigate to a dynamic url with gatsby 【发布时间】:2021-05-23 19:57:50 【问题描述】:

我正在使用导航移动到另一个 URL。我看到很多帖子使用Link 移动到具有动态网址的另一个页面。但我想更改网址而不写jsx

当我导航到以下网址时,我收到 404 错误

navigate(`/vidx/$u`, 
      state:  vid: r 
    )

我将 gatsby-node.js 更改为跟随,但仍然出现相同的错误。我在pages 文件夹中有一个名为vidx.js 的文件

exports.onCreatePage = async ( page, actions ) =>    
    const  createPage  = actions
    if (page.path.match(/^\/vidx/)) 
      page.matchPath = "/vidx/*";
      createPage(page); 
     

我的网址将如下所示 - www.xyz.com/vidx/123456789123456789 的号码将取决于登录的用户

【问题讨论】:

vidx/123456789 路径是否存在? 没有。每当有新用户注册时,此数字就会动态生成 对不起,我不明白。您正在尝试重定向到未创建的页面? 我想重定向到vidx.js;但 URL 应为 /vidx/123456789 【参考方案1】:

我想重定向到 vidx.js;但 URL 应该是 /vidx/123456789

这永远不会起作用,因为 /vidx/123456789 总是会抛出 404 错误,因为它没有生成并且不存在,它是一个单独的新页面。

您可以使用一个简单的方法:/vidx?queryParameter=123456789。在这种情况下,您的页面将保持为 /vidx,并且您可以获取 queryParameter 以按照自己的逻辑制作内容。

【讨论】:

谢谢。我将网址更改为http://localhost:8000/vidx/?v=1613907113203。我在 pages 文件夹中有一个 vidx.js。但我仍然收到Create a React.js component in your site directory at src/pages/vidx.jsand this page will automatically refresh to show the new page component you created. 可以分享一下vidx.js页面的代码吗? 这里-codepen.io/shrwtz/pen/jOVLgpK?editors=0010 嘿,现在工作。我做了gatsby clean。非常感谢!

以上是关于使用 gatsby 以编程方式导航到动态 url的主要内容,如果未能解决你的问题,请参考以下文章

如何从索引页重定向到Gatsby.JS项目中以编程方式生成的路由

Gatsby-plugin-image 与以编程方式创建的页面问题

以编程方式膨胀底部导航视图菜单

以编程方式从内容数据创建 Gatsby 页面

以编程方式构建导航抽屉

以编程方式将片段添加到android中的框架布局