如何在 vue 3 中获取路由器的参数?

이상진*_*이상진 5 typescript vue.js vuejs3

我在 Vue.js 3 和 TypeScript 中创建了一个项目。

路由器.js

{
    path: "/app/:id",
    name: "Detail",
    component: Detail,
    props: true
  },
Run Code Online (Sandbox Code Playgroud)

应用程序.js

{
    path: "/app/:id",
    name: "Detail",
    component: Detail,
    props: true
  },
Run Code Online (Sandbox Code Playgroud)

但这会导致错误:

"Cannot find name '$route'."
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Dan*_*Dan 38

如果我们使用最新的 Vue 3“脚本设置”SFC 方式,那么

<script setup>
import { useRoute } from 'vue-router';

const route = useRoute();  
const id = route.params.id; // read parameter id (it is reactive) 
</script>
Run Code Online (Sandbox Code Playgroud)


ton*_*y19 21

Vue Router 4.x 提供useRoute()了:

import { useRoute } from 'vue-router'

export default {
  setup() {
    const route = useRoute()

    onMounted(() => {
      const id = route.params.id
    })
  }
}
Run Code Online (Sandbox Code Playgroud)

演示

  • ~“‘Router’.ts(2339) 类型上不存在属性‘params’”~ -&gt; 更新:没关系,useRoute 末尾不带 r ... *facepalm* (3认同)