Vue.js使用v-for循环生成router-link动态路径出现报错如何解决
错误原因
- 核心原因是你在
<router-link>的to属性中使用了命名路由name: 'User',但全局路由配置里没有注册名为User的路由条目,Vue Router 无法解析出合法的跳转目标,因此触发to属性缺失的警告,后续路由解析逻辑读取不存在的路由属性时,就会抛出Cannot read properties of undefined (reading '_normalized')的报错。 - 额外说明:即便你不用命名路由改用path路径跳转,当前也没有配置对应动态参数的User路由规则,跳转逻辑依然会失效。
解决方案
- 先修改
main.js文件,引入User组件,补充注册对应的命名路由,修改后的路由配置参考如下:
import Vue from "vue"; import App from "./App.vue"; import VueRouter from "vue-router"; import HelloWorld from "./components/HelloWorld.vue"; // 新增引入User组件 import User from "./components/User.vue"; Vue.use(VueRouter); const router = new VueRouter({ routes: [ { path: "/", component: HelloWorld }, // 新增User路由配置 { name: "User", // name属性必须和router-link中填写的完全一致 path: "/user/:id", // :id对应你要传递的params参数 component: User } ] }); Vue.config.productionTip = false; new Vue({ router, render: (h) => h(App) }).$mount("#app");
- (可选)如果你需要在User组件中读取传递过来的id参数,可以直接通过
this.$route.params.id获取对应值。
修改完成后重启项目,两个报错都会消失,动态路由跳转逻辑即可正常运行。
内容的提问来源于stack exchange,提问作者user17525310
相关产品推荐
相关产品推荐

