缓存路由组件
-
作用:让当前不进行展示的组件保持挂载,不在切换时被销毁
-
设置:在需挂载的组件的父组件对其进行设置
-
需求:
News组件中新增输入功能,组件切换后输入内容不丢失 -
实现
-
在
News组件中新增输入框News组件
<ul> <li>news001 <input type="text"></li> <li>news002 <input type="text"></li> <li>news003 <input type="text"></li> </ul> -
在其父组件中配置
Message组件
<keep-alive include="News"> <router-view/> </keep-alive>
-
-
注:
-
keep-alive标签中不写include属性,其子组件均保持切换时保持挂载 -
include属性中写的是组件名 -
若只缓存多个组件中的某几个,则将
include中的值写为数组<keep-alive :include="['News','Message']"> <router-view/> </keep-alive>
两个新的生命周期钩子
-
作用:路由组件独有的两个钩子,用于捕获路由组件的激活状态
-
钩子
activated(激活):路由组件被激活时触发deactivated(失活):路由组件失活时触发
为News组件新增渐变文字
- 在组件中新增文字
- 为文字设置透明度与定时器
- 在组件激活时启动定时器,失活是清除定时器
<script>
import {defineComponent} from 'vue'
export default defineComponent({
name: "News",
data(){
return {
opacity:1
}
},
activated() {
this.timer= setInterval(()=>{
this.opacity-=0.01
if (this.opacity<=0) this.opacity=1
},16)
},
deactivated() {
clearInterval(this.timer)
}
})
</script>
<template>
<div>
<h3 :style="{opacity}">欢迎学习vue</h3>
<ul>
<li>news001 <input type="text"></li>
<li>news002 <input type="text"></li>
<li>news003 <input type="text"></li>
</ul>
</div>
</template>