「这是我参与2022首次更文挑战的第15天,活动详情查看:2022首次更文挑战」。
上一篇简单的和大家介绍了关于,在本篇我会给大家介绍一下关于vue中缓存路由组件,在我们之前讲解的路由的使用中如果我们需要获取一个表单的数据,都是客户或者我们在使用表单填数据的时候可以 不会马上填好,中途会切换出去其他地方,但是呢切出去在回来我们的数据就会丢失,这样的用户体验就很差,使用我们要将这些临时的数据存起来。
这个时候就可以使用到我们的缓存路由组件也就是keep-alive标签这个标签的意思就是保持活跃,帮助我们的组件不被销毁,这种标签还有一个属性include=" "是指定被包裹下面的哪一个不被销毁。include="组件名"
<template>
<div>
<h2>Home组件内容</h2>
<div>
<ul class="nav nav-tabs">
<li>
<router-link class="list-group-item" active-class="active" to="/home/news">News</router-link>
</li>
<li>
<router-link class="list-group-item" active-class="active" to="/home/message">Message</router-link>
</li>
</ul>
<!-- 缓存多个路由组件 -->
<!-- <keep-alive :include="['News','Message']"> -->
<!-- 缓存一个路由组件 -->
<keep-alive include="News">
<router-view></router-view>
</keep-alive>
</div>
</div>
</template>
<script>
export default {
name:'Home',
/* beforeDestroy() {
console.log('Home组件即将被销毁了')
}, */
/* mounted() {
console.log('Home组件挂载完毕了',this)
window.homeRoute = this.$route
window.homeRouter = this.$router
}, */
}
</script>
1.缓存路由组件
-
作用:让不展示的路由组件保持挂载,不被销毁。
-
具体编码:
<keep-alive include="News"> <router-view></router-view> </keep-alive>注意:要看我们展示的组织在谁的里面,就在哪里写。因为缓存路由组件只能在组件外使用,如果我们写在组件内部将会失效。 小技巧当我们需要缓存的组件过多但是又不是全部的时候,可以通过将include变成
:include这样我们就可以在值里面写数组了:include=“['xx','bbb','ccc']”
接下来我和大家讲两个新的生命周期钩子,如果我们使用了上面缓存路由组件会出现一个尴尬的事情这个就是beforeDestroy的方法被取消了也可以说是失效了,但是我们又需要在这个组件中使用这个功能怎么办呢?这个时候我们就需要知道路由组件所独有的两个钩子了他们就是activated和deactivated
2.两个新的生命周期钩子
- 作用:路由组件所独有的两个钩子,用于捕获路由组件的激活状态。
- 具体名字:
activated路由组件被激活时触发。deactivated路由组件失活时触发。