vue keep-alive

news/2024/7/10 3:22:09 标签: vue, keep-alive

keep-alive本身是vue2.0的功能,可以使被包含的组件保留状态,或避免重新渲染

标签<keep-alive>具有属性:
	1. include:
		内容要求字符串或正则表达,只有匹配的组件会被缓存
	2.exclude:
		内容要求字符串或正则表达式,任何匹配的组件都不会被缓存
	实例:
		// 组件 component
		export default {
			name: 'a',
			data () {
				return {}
			}
		}
		<!-- name 为 a 的组件将被缓存! -->
		<keep-alive include="a">
			<component></component>
		</keep-alive>
 
		<!-- 除了 name 为 a 的组件都将被缓存! -->
		<keep-alive exclude="a">
			<component></component>
		</keep-alive>
keep-alive也可以作为router的配置属性,设定在路由中
	例如:
		import Vue from 'vue'
		import Router from 'vue-router'
		Vue.use(Router)
		export default new Router({
			{
				//home会被缓存
				path:"/home",
				component:home,
				meta:{
					keepAlive: true
				}
			}
			{
				//hello不会被缓存
				path:"/hello",
				component:hello,
				meta:{
					keepAlive: false
				}
			}
		})
	读取可以通过$route.meta.keep-alive
实例:
<template>
  <div id="app">
    <!--缓存想要缓存的页面,实现后退不刷新-->
    <!--加上v-if的判断,可以自定义想要缓存的组件,自定义在router里面-->
    <keep-alive>
      <router-view v-if="$route.meta.keepAlive"></router-view>
    </keep-alive>
    <router-view v-if="!$route.meta.keepAlive"></router-view>
    <!--这里是其他的代码-->
  </div>
</template>

<router-view> 也是一个组件,如果直接被包在 <keep-alive> 里面,所有路径匹配到的视图组件都会被缓存
当然也可以通过添加<keep-alive>的属性include或者exclude,配置组件name进行筛选

当组件在 <keep-alive> 内被切换,它的 activated 和 deactivated 这两个生命周期钩子函数将会被对应执行。
而传统的mounted和estroyed的生命周期钩子函数不会被触发。
如此使得被keep-alive组件包裹的组件的状态得以保留也避免了该组件的重复渲染。
如果要在该组件内做进入的局部数据更新,可以在activated中进行数据更新。

也可以通过更改keep-alive在router中的属性值来控制页面本次加载是否缓存数据
当需要在离开页面前改变去往页面的缓存状态时,仅需要在页面中添加beforeRouteLeave
实例:
	export default {
        data() {
            return {
                
            };
        },
        beforeRouteLeave(to, from, next) {
            // 设置下一个路由的 meta
            to.meta.keepAlive = false;
            next();
        }
    }

 


http://www.niftyadmin.cn/n/1162549.html

相关文章

vue项目中app.vue 、main.js和 index.html的关联

1. main.js是入口文件&#xff0c;主要作用是初始化vue实例并使用需要的插件。 2. App.vue是主组件&#xff0c;所有页面都是在App.vue下进行切换的。 3. main.js中的根实例会挂载到index.html中的<div id"app"> 4. index.html文件入口 5. src…

RGBA(0,0,0,0)调色

前三个值&#xff08;红绿蓝&#xff09;的范围为0到255之间的整数或者0%到100%之间的百分数。 第四个值&#xff0c;alpha值&#xff0c;制定了色彩的透明度/不透明度&#xff0c;它的范围为0.0到1.0之间,0.5为半透明。 rgba(255, 255, 255, 0)则表示完全透明的白色 rgba(0, 0…

filter: blur() 高斯模糊效果

比较喜欢的效果实例&#xff1a;<div class"lbg"><img src"../../assets/01.jpg" class"test-img"></div>.lbg{/* 设置相对定位 */position: relative;/* 宽度120%&#xff0c;-10%让元素集中 */left: -10%;/* 为了实现椭圆效…

Animate.css 动画效果框架

1. 从官网下载 https://raw.github.com/daneden/animate.css/master/animate.css 2. 通过npm安装 $ npm install animate.css 3. 使用在线cdn https://unpkg.com/animate.css3.5.2/animate.min.css 想要使用哪种动画&#xff0c;只需要把通用类animat…

vue set的使用

受 ES5 的限制&#xff0c;Vue.js 不能检测到以下响应式界面更新&#xff1a; 1. 数组中某一项的变动 例如&#xff1a; arr: [1,2,3,4] this.arr[0] 5 2. 数组长度的改变 例如&#xff1a; arr: […

Sortable.js 拖放排序插件

Sortable.js是一款轻量级的拖放排序列表的js插件 1. 安装$ npm install sortablejs --save 2. 使用定位到需要排序的对象&#xff0c;创建Sortable对象并添加响应配置设置可以通过方法&#xff1a;var sortable Sortable.create(el,{}) 或者 var sortable new Sortable(el…

react history 历史页面管理

history是为React Router提供核心功能的包。 它能轻松地在客户端为项目添加基于location的导航。 1. 安装npm install --save history 2. 类型import { createBrowserHistory, createHashHistory, createMemoryHistory } from history存在三类history&#xff0c;分别时browse…

Velocity.js 动画框架

网页的交互动效大概分为 css动画&#xff0c;js动画 Animate.css属于css动画框架&#xff0c;Velocity.js属于js动画框架 css动画的优点&#xff1a; 不用进行计算和更改dom 会显得非常流畅。 js动画的优点&#xff1a; 没有css那样的局限性&#xff0c;可以实现更多的…