vue进阶篇 - 路由器的缓存路由组件和路由独有的两个钩子

322 阅读2分钟

「这是我参与2022首次更文挑战的第15天,活动详情查看:2022首次更文挑战」。


上一篇简单的和大家介绍了关于,在本篇我会给大家介绍一下关于vue中缓存路由组件,在我们之前讲解的路由的使用中如果我们需要获取一个表单的数据,都是客户或者我们在使用表单填数据的时候可以 不会马上填好,中途会切换出去其他地方,但是呢切出去在回来我们的数据就会丢失,这样的用户体验就很差,使用我们要将这些临时的数据存起来。

image.png

这个时候就可以使用到我们的缓存路由组件也就是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.缓存路由组件

  1. 作用:让不展示的路由组件保持挂载,不被销毁。

  2. 具体编码:

    <keep-alive include="News"> 
        <router-view></router-view>
    </keep-alive>
    

    注意:要看我们展示的组织在谁的里面,就在哪里写。因为缓存路由组件只能在组件外使用,如果我们写在组件内部将会失效。 小技巧当我们需要缓存的组件过多但是又不是全部的时候,可以通过将include变成:include这样我们就可以在值里面写数组了:include=“['xx','bbb','ccc']”

接下来我和大家讲两个新的生命周期钩子,如果我们使用了上面缓存路由组件会出现一个尴尬的事情这个就是beforeDestroy的方法被取消了也可以说是失效了,但是我们又需要在这个组件中使用这个功能怎么办呢?这个时候我们就需要知道路由组件所独有的两个钩子了他们就是activateddeactivated

2.两个新的生命周期钩子

  1. 作用:路由组件所独有的两个钩子,用于捕获路由组件的激活状态。
  2. 具体名字:
    1. activated路由组件被激活时触发。
    2. deactivated路由组件失活时触发。