如何在Vue.js-Nuxt-TypeScript应用程序中访问路由参数?

JavaScript Vue.js

村村番长

2020-03-23

我正在建立一个基于Nuxt TypeScript Starter模板的网站。我已经在页面文件夹中创建了动态路由的页面_id.vue,并且希望可以访问TS类中的id属性。我可以通过写在模板中访问它,{{$route.params.id}}但是当我尝试$route在类内部引用时,出现错误:

错误TS2304:找不到名称'$ route'。

第2789篇《如何在Vue.js-Nuxt-TypeScript应用程序中访问路由参数?》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

3个回答
null 2020.03.23

更好和正确的解决方案,用于nuxtjs项目以查找当前页面的URL或参数

{{ $nuxt.$route.name }}
村村 2020.03.23

作为一个简单的解决方案,请尝试从vue-router导入路由,如下所示:

<script lang="ts">
import Component from "vue-class-component"
import { Route } from "vue-router"

@Component({})
export default class RoutingExample extends Vue {
    created() {
        console.log(this.$route) // this should not throw TS errors now
    }

}
</script>

我认为其他解决方案将需要您扩展Vue模块,这与您在Vue文档中可以找到的类似

可以在此仓库中找到更多Vue + TypeScript示例:https : //github.com/jsonberry/vue-typescript-examples

伽罗 2020.03.23

我能够通过获取函数访问route.params,从默认情况下传递给该函数的上下文对象中获取参数:

<script lang="ts">
import Component from "nuxt-class-component"
@Component({})
export default class RoutingExample extends Vue {
    fetch ({ store, params }) {
       console.log("params:", params.id);
       ...
    }
}
</script>

但需要注意的是,参数只能在该获取挂钩中使用,而不能在其他已创建或已安装的挂钩中使用。所以杰森的答案也是有效的

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android