使用Express服务器将多个参数传递给Next.js自定义URL

时间:2018-11-17 09:59:04

标签: reactjs express next.js

我遵循了Next.js的示例,介绍了如何create Server Side Support for Clean URLs,但是该示例仅支持传递一个参数

一切正常,我也在github上找到了如何add multiple parameters到Next.js路由的信息。

server.get('/question/:id/:subject', (req, res) => {
  const actualPage = '/question'
  const mergedQuery = Object.assign({}, req.query, req.params)
app.render(req, res, actualPage, mergedQuery)})

来自组件的链接如下所示

 <Link as={`/question?id=${questionId}&subject=${subject}`} href={`/question?id=${questionId}&subject=${subject}`} ><a>{question}</a></Link>

这也很好。 我的挑战是,当我尝试如下所示屏蔽url时,刷新页面时我得到了404页面。

server.get('/q/:id/:subject', (req, res) => {
  const actualPage = '/question'
  const mergedQuery = Object.assign({}, req.query, req.params)
app.render(req, res, actualPage, mergedQuery)})

组件链接

 <Link as={`/q?id=${questionId}&subject=${subject}`} href={`/question?id=${questionId}&subject=${subject}`} ><a>{question}</a></Link>

1 个答案:

答案 0 :(得分:1)

在Google上苦苦挣扎并玩了几个小时的代码后,此修复程序使我可以将多个参数传递给Next.js url,并且页面刷新应用程序仍然可以正确加载。

<Link as={`/q/${questionId}/${subject}`} href={`/question?id=${questionId}&subject=${subject}`} ><a>{question}</a></Link>