在 VueJS 中访问 $route.params

Posted

技术标签:

【中文标题】在 VueJS 中访问 $route.params【英文标题】:Accessing $route.params in VueJS 【发布时间】:2018-05-05 00:34:50 【问题描述】:

浏览此文档: https://router.vuejs.org/en/essentials/navigation.html

看起来你可以绑定<router-link :to="variableName">Link Text</routerlink>,这很漂亮;但是,我在尝试访问正在尝试构建的组件内的路由参数时遇到了一些麻烦。

所以我用这个:

<router-link :to="permalink">Title of thing</router-link>

然后直接路由器视图拉论坛线程。在路由器中使用它:

import ForumThread from './views/groupTitle/forumThreadSingle';

// Other routes...
let routes = [
    
        path: '/groupTitle/th/:id',
        component: ForumThread,
     
]; 

我可以在 forumthread 组件中看到 $route.params.id 也在传递它;但是,当我尝试像这样访问它时:

console.log('The id is: ' + $route.params.id);

找不到对象的参数部分。

VueJS 对我来说和 javascript 本身一样都是新的。我看到的所有示例都显示模板与路由器文件内联,这是我试图阻止的,以帮助保持我的代码可读和干净。

我可以进行哪些调整以便将属性传递给模板文件?

谢谢!

【问题讨论】:

您能否围绕您的console.log 声明显示更多上下文。这是在 Vue 实例的函数中吗? permalink 变量的内容是什么? 在 vue 组件中,您可以简单地使用 this.$route.params.... 【参考方案1】:

如果您使用的是 Vue Loader 设置(文件中有 &lt;template&gt;&lt;/template&gt; 标签),则需要使用 this 来引用 $router,如果您在 &lt;script&gt;&lt;/script&gt; 部分中这样做文件。

 console.log('The id is: ' + this.$route.params.id);

【讨论】:

就我而言,我不得不使用 console.log('The id is: ' + this.$route.params.id.toString());【参考方案2】:

如果想通过 vue-router 4.x 的组合 API 在 vue 3 中获取参数,可以使用 useRoute 来实现。

import useRoute from "vue-router";
setup()
   const route = useRoute();
   const id = route.params.id;
 

【讨论】:

以上是关于在 VueJS 中访问 $route.params的主要内容,如果未能解决你的问题,请参考以下文章

不允许通过字符串文字访问对象!当我尝试通过动态 id 访问 (route.params['id'] 路由参数时

为啥设置方法中的“route.params.id”不可用/未定义?

构建站点全局导航时(在路由器视图之外),app.vue 中的 this.$route.params 为空

在 Vuejs 中使用静态 JSON 进行动态路由

在 vue3 / quasar2 中访问 $route

在 vue js 上观看路由对象