请解释 Vue 中动态路由的概念,并描述获取动态路由参数的方法。
考察说明
考查对 Vue Router 动态路由的理解及参数获取的掌握程度。
回答思路
- 【回答框架 1】动态路由是路由路径中包含参数占位符的路由定义,通过冒号加参数名实现,例如 /user/:id 可匹配 /user/123 与 /user/456 等不同路径。其核心价值在于用一条路由规则应对多个相似路径,无需为每个具体 ID 单独配置路由。
- 【回答框架 2】当路由匹配成功后,参数会被挂载到当前路由对象上。在组件内可通过 this.$route.params 访问,例如 this.$route.params.id 获取路径中的 id 值。在组合式 API 中,可以使用 useRoute() 的返回值 .params 获取相同信息。
- 【回答框架 3】除 params 外,动态路由还常与查询参数(query)配合使用。params 对应路径中的动态段,query 对应 URL 问号后的键值对,两者获取方式不同,但都通过 $route 或 useRoute 提供。
- 【回答框架 4】若组件是复用而非重新渲染,路由参数变化时组件实例不会重建,需通过 watch $route 或路由守卫(beforeRouteUpdate)监听参数变化并重新获取数据,避免展示旧数据。
- 【关键点 1】动态路由通过占位符 :param 定义,匹配对应路径段。
- 【关键点 2】组件内用 $route.params 或 useRoute().params 获取参数,键名与占位符一致。
- 【关键点 3】路由参数变化需用 watch 或守卫响应,组件不会自动重新创建。
- 【易错点 1】混淆 params 与 query,两者来源和获取方式不同,应区分使用。
- 【易错点 2】忽略参数变化监听,导致在复用组件中展示上一次的参数数据。
- 【易错点 3】在模板中直接使用 $route.params 时未考虑参数可能不存在,造成显示异常。