路由的query参数
传递参数有两种方式
(1)在<router-link :to='路由+传参'>
<!-- <div v-for="item of detiel">--><!-- <router-link :to="'/list?id='+item.id+'&title='+item.title">{
{item.id}}</router-link>--><!-- </div>-->
(2)跳转并携带query参数,to的对象写法
<!-- 使用query进行跳转-->
<!-- <router-link :to="{path:'/',query:{id:2,title:'好大儿'}}">点击</router-link>-->
<!-- <ul>-->
<!-- <li>{
{$route.query.title}}</li>-->
<!-- </ul>-->
接收参数
$route.query.id
路由params参数
传递参数
(1)跳转并携带params参数,to的字符串写法
<router-link :to="/home/message/detail/666/你好">跳转</router-link>
(2)跳转并携带params参数,to的对象写法
<router-link :to="{name:'xiangqing',params:{id:666,title:'你好'}}"
>跳转</router-link>
特别注意:路由携带params参数时,若使用to的对象写法,则不能使用path配置项,必须使用name配置!
路由的props配置
{name:'xiangqing',path:'detail/:id',component:Detail,//第一种写法:props值为对象,该对象中所有的key-value的组合最终都会通过props传给Detail组件// props:{a:900}//第二种写法:props值为布尔值,布尔值为true,则把路由收到的所有params参数通过props传给Detail组件// props:true//第三种写法:props值为函数,该函数返回的对象中每一组key-value都会通过props传给Detail组件props(route){return {id:route.query.id,title:route.query.title}}
}
router-link的replace属性
作用:是用来控制路由跳转时操作浏览器历史记录的模式
-
浏览器的历史记录有两种写入方式:分别为
push
和replace
,push
是追加历史记录,replace
是替换当前记录。路由跳转时候默认为push
2.用法<router-link replace>Home</router-link>
一般情况下push用的比较多一些
编程式路由导航
上面所用的都是用<router-link>标签进行路由跳转,那么有没有一种方式是不需要使用<router-link>标签来进行跳转呢
答案是有,我们可以使用编程式路由导航,让跳转更加灵活
//$router的两个API
this.$router.push({name:'xiangqing',params:{id:xxx,title:xxx}
})this.$router.replace({name:'xiangqing',params:{id:xxx,title:xxx}
})
this.$router.forward() //前进
this.$router.back() //后退
this.$router.go() //可前进也可后退
缓存路由组件
-
作用:让不展示的路由组件保持挂载,不被销毁。
2.具体编码:
<keep-alive include="News"> <router-view></router-view>
</keep-alive>
两个新的生命周期钩子
-
作用:路由组件所独有的两个钩子,用于捕获路由组件的激活状态。
-
具体名字:
-
activated
路由组件被激活时触发。 -
deactivated
路由组件失活时触发。
-