Next.js: 路由问题 - 参数模式,如:“/profile/:id/edit”和服务器数据库 - 如何将数据传递给反应组件?

创建于 2016-12-17  ·  3评论  ·  资料来源: vercel/next.js

嗨,我知道之前讨论过这个问题,但我无法找到此模式的明确答案。
首先 - 如果我错了,请纠正我,如果您没有实现自定义服务器(http 或 express),则链接组件仅支持查询字符串参数,例如“/profile?id=123&action=edit”,我说得对吗?
为了能够使用像“/profile/:id”这样的 url 参数模式,你需要实现一个自定义服务器......这是我能猜到的最好的例子......
如果是这样 - 你将如何实现像“/profile/:id/edit”这样的模式
在“参数化路由”示例中,index.js 使用的是这样的链接:
<Link href='/blog?ip=first' as='/blog/first'><a>My first blog post</a></Link>

我无法破译 server.js 上的必要工作流程
server.js 声明const match = route('/blog/:id')

然后不清楚地址栏到底是什么,被推送到反应组件的数据是什么?
我如何处理像“/profile/:id/edit”这样的路由
我如何以通用方式处理许多路由(来自 react-router 我正在寻找匹配实用程序等效...)
另外,如果我在渲染之前获取了 db 数据 - 如何将获取的数据传递给 react 组件。
所有这些都有些晦涩难懂,我非常感谢您的帮助,因为我试图猜测我的出路,但没有成功。

谢谢
半开

最有用的评论

这是一组很好的问题。
我们将在文档中添加更多信息。

现在,这样想:

  • Next.js 只知道如何提供页面。 你应该通过参数传递。 (例如: /blog?id=first
  • 使用#310,我们允许一种自定义它在外部世界的外观的方法。 (例如: blog/:id
  • 当您进行客户端路由时,客户端应用程序对自定义 url 一无所知。
  • 因此,您需要将链接用作: <Link href='/blog?id=first' as='/blog/first' />

    • href:这是页面的实际网址

    • as:这就是它在浏览器中的样子(通常,它应该与您的自定义 URL 模式匹配)

所有3条评论

这是一组很好的问题。
我们将在文档中添加更多信息。

现在,这样想:

  • Next.js 只知道如何提供页面。 你应该通过参数传递。 (例如: /blog?id=first
  • 使用#310,我们允许一种自定义它在外部世界的外观的方法。 (例如: blog/:id
  • 当您进行客户端路由时,客户端应用程序对自定义 url 一无所知。
  • 因此,您需要将链接用作: <Link href='/blog?id=first' as='/blog/first' />

    • href:这是页面的实际网址

    • as:这就是它在浏览器中的样子(通常,它应该与您的自定义 URL 模式匹配)

谢谢@arunoda
简单明了。

惊人的。 将关闭这个问题。

此页面是否有帮助?
0 / 5 - 0 等级