路由参数
- 动态路径传参数
比如我们要传递的路径 /hi/haha/123 第一个是组件名,第二个,第三个是参数
路由里面配置参数
看路径 利用冒号绑定好参数
javascript
{
path:'/Hi/:username/:id',
name:"Hi",
component:Hi,
children:[
{path:"hi1",name:"Hi1",component:Hi1},
{path:"hi2",name:"Hi2",component:Hi2},
]
}
- 组件里输出的时候
javascript
{
{
$route.params.username;
}
}
{
{
$route.params.id;
}
}
路由跳转参数的两种方法
利用 query 方式传递参数
利用 params 方式传递参数
利用 query 传递参数
- 刷新后页面参数不丢失
html
<script>
传参:
this.$router.push({
path:'/xxx'
query:{
id:id
}
})
接收参数:
this.$route.query.id
</script>
利用 params 传递参数
html
<script>
传参:
this.$router.push({
name:'xxx'
params:{
id:id
}
})
接收参数:
this.$route.params.id
</script>
Vue2.x 里面的路由拦截
第一种 全局匹配 beforeEach
第二种单个路由下面写配置 beforeEnter
第三种就是组件里面写钩子函数 beforeRouterEnter
全局匹配
一般情况 我们管这个叫路由守卫,简称全拦,他一般有 3 个参数,to,from,next 表示通过才跳转。一般写在 main.js 里面
to 表示要跳转的路径信息,from 要是从哪里来的信息,next 表示路由控制的参数,通过与否
代码
javascript
router.beforeEach((to, from, next) => {
// 定义一个列表
const auth = ["/about", "/", "/login"];
if (auth.includes(to.fullPath)) {
// 如果to.fullPath 在这个列表里,就验证token, 否则放行
// console.log('验证token')
if (to.path == "/about") {
next({
path: "/login",
query: {
id: "哈哈",
},
}); // 当没有token就next到login页面
} else {
next(); // 有就放行
}
} else {
next();
}
});
单个路由下配置
javascript
{
path: '/',
name: 'HelloWorld',
components: {
default: HelloWorld,
left: Hi1,
right: Hi2,
}
},
beforeEnter:(to,from,next)=>{
console.log("我进来了");
console.log(to);
console.log(from);
next()
}
组件里面写好了钩子函数 beforeRouterEnter,beforeRouterLeave
javascript
export default {
name:"Hi2",
data(){
return {
message2:"这个就是Hi2页面"
}
},
beforeRouterEnter:(to,from,next){
console.log("我进来了")
}.
beforeRouterLeave:(to,form,next){
console.log("我离开了")
}
}