vuejs路由使用的问题Error in render function: "TypeError: Cannot read property 'matched' of undefined"

来源:互联网 发布:linux编译安装mysql 编辑:程序博客网 时间:2024/05/21 13:10

从一次执行错误开始

html代码

<div id="app">    <router-link to="/home">首页</router-link>    <router-link to="/about">关于我们</router-link>    <router-view></router-view></div>

当然了这个HTML代码时没有问题的,大家也可以再vue-router的文档上看到相应的代码。重点在下边的js代码部分,这部分对于第一次接触vue-router的人大部分会遇到吧。
js代码

 // 1. 定义(路由)组件。 const Foo = { template: '<div>foo</div>' } const Bar = { template: '<div>bar</div>' } // 2. 定义路由 const routes3 = [     { path: '/home', component: Foo },     { path: '/about', component: Bar } ] // 3. 创建 router 实例,然后传 `routes` 配置 const router4 = new VueRouter({     routes3  }) // 4. 创建和挂载根实例。 const app = new Vue({     router4}).$mount('#app')

运行错误说明

运行以上实例然而界面显示为空白,什么都没有。what!这个不对吧。然而打开开发者模式后再来看看,错误提示如下:

这里写图片描述

错误分析

其实这个是按照官方的写法写的,一般如果喜欢搞得程序员才会遇到。那么为什么会出现这样的错误呢?
因为在官方第2步和第3步总的常量的命名其实是有规则的。
官方的路由定义和路由实例的名称分别是:routes和router
但是我们以为这两个可以随便变所以写成了自己喜欢的名称。这样写之后其实在实例化路由实例和应用实例时要有变化:

const router = new VueRouter({  routes // (缩写)相当于 routes: routes})

这儿为什么可以直接将路由定义数组传入VueRouter中呢?因为实例中对路由定义的数组的命名是routes。注释中写了routes相当于routes:routes
那么如果我们的路由定义数组名称不是routes当然是不能使用简写的。就要乖乖的写成 routes:routes3或其他方式routes3不一定是你自己的路由定义数组名称,请替换成自己的就行

const app = new Vue({  router}).$mount('#app')

同理官网上载实例化vue对象时直接传入路由实例,为什么可以这样传呢?同样是因为路由对象命名为了router。
如果你的VueRouter的实例名称为router4那么你在实例化时乖乖的写成router:router4这样
好了这只是个简单的踩坑的过程,比较小儿科,望大神略过。

阅读全文
2 0
原创粉丝点击