将自定义数据传递到vue-router中的$ router.push()

Sli*_*lim 2 javascript vue-router vuejs2 nuxt.js

有没有办法将其他数据传递给$router.push()未在路径的路径中注册为参数或查询的数据。这将使我在下一页上认识到它已通过编程导航访问,因为无法通过URL传递它。就像是:

this.$router.push({
   path: '/next-page', 
   params: {...}, 
   query: {...}, 
   moreData: {foo: 1}
})
Run Code Online (Sandbox Code Playgroud)

然后在/next-page

this.$route.moreData.foo // 1
Run Code Online (Sandbox Code Playgroud)

目前,我正在使用$store来处理moreData

Sli*_*lim 10

我找到了解决方案。Vue-router文档中有一个注释,内容为:

注意:params如果path提供a,则将被忽略。相反,您需要提供name

因此,params如果我们使用以下路线导航,则可以将自定义数据传递给name

$router.push({name: 'next-page', params: {foo: 1}})

// in /next-page
$route.params.foo // 1
Run Code Online (Sandbox Code Playgroud)

  • @AkshayDeshmukh 不,它不是通过 url 传递的,而是可以通过 `$route.params` 访问。url 是与具有该名称的路由相对应的 URL。应该只有一条具有该名称的路由,因为它被视为唯一标识符。当然,如果我导航到具有 `path = '/users/:id'` 的路线 `{ name: 'users-id', params: {id: 1}}` ,则 id 将出现在 url 中出色地。 (3认同)