开发步骤
- 编写组件
- 在index中配置该组件的name,和path等
作用:
用于组件的切换。
组件切换方法:
一、标签(在temlate中直接使用)
点击该标签就可以实现跳转
\<router-link\>
该标签是一个vue-router中已经内置的组件, 它会被渲染成一个<a>标签.
\<router-view\> 显示组件的
该标签会根据当前的路径, 动态渲染出不同的组件.
无参数的跳转
<template>
<nav>
<--replace代表跳转之后不可以返回 -->
<router-link to="/home">Home</router-link> |
<router-link replace to="/about">About</router-link>
</nav>
<!--路由组件容器,不同地址对下的组件在这里渲染-->
<router-view/>
</template>带参数跳转
<router-link :to="{name:'User',query:{id:1,name:'zs'}}">user</router-link>
<router-link :to="{path:'/user',query:{id:1,name:'zs'}}">user</router-link>
<--to中第一个键值对代表组件地址,或者名字;第二个键值对是参数。key是query -->二、router.push(path),router.peplace(path).(在方法中使用)。
给某个标签绑定点击事件,就可以点击该标签实现跳转
无参数的跳转和带参数的跳转
methods:{
login:function () {
if(this.loginName=="root"&&this.password=="root"){
//router.push("/");//不带参数的跳转
this.$router.push({
name:"home", // path:"/home",这里也可以用name
query:{
loginName:"root",
}
})
sessionStorage.setItem("loginName","root");
}else{
alert("账号或者密码错误!")
}
}
}获取参数
方法一:(在temlate中直接使用)
{{$route.query.id}}
{{$route.query.name}}方法二:在<script>中
created() {
//获取动态路由参数
this.id = this.$route.query.id;
this.name = this.$route.query.name;
},守卫路由:
- vue-router提供了beforeEach和afterEach的钩子函数, 它们会在路由即将改变前和改变后触发.
//用来监听路由的跳转,可以做登录判断。to:要跳转到的路由;from;从什么路由发起。next,放行。
router.beforeEach((to,from,next)=>{
if(to.path=="/login"||to.name=="login"){
next();
}else{
let loginName;
loginName = sessionStorage.getItem("loginName");
if(loginName=="root")
{
next();
}else{
router.replace("/login")
}
}
})组件的嵌套
在某个组件中嵌套组件,点击不会跳转。在index.js中的一个组件路由中添加一个参数
children:[
{
name:"student",
path:"/about/student",
component: () => import(/* webpackChunkName: "about" */ '../views/StudentView.vue'),
},
{
name:"user",
path:"/about/user",
component: () => import(/* webpackChunkName: "about" */ '../views/UserView.vue'),
},
]$router和$route的区别
router:index.js中的所有路由组件。(一般用来组件的跳转)
router:当前的路由。(用来获取参数)
版权声明:本文为m0_52261367原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。