【Vue】Re18 Router 第五部分(KeepAlive)
一、KeepAlive概述
默认状态下,用户点击新的路由时,是访问新的组件
那么当前组件是会被销毁的,然后创建新的组件对象出来
如果某些组件频繁的使用,将造成内存空间浪费,也吃内存性能
所以需求是希望组件能被缓存起来,不是立即销毁
生命周期的创建函数 create(); 和销毁函数 destory(); 都将反复调用
二、使用
只需要把router-view做为keep-alive的子元素就行了
<template>
<div id="app">
<router-link to="/home" tag="button" >去首页</router-link>
<router-link to="/about" tag="button" >去关于</router-link>
<router-link :to="/user/+username" tag="button" >用户管理</router-link>
<router-link :to="ppp" tag="button" >profile</router-link>
<!-- <button @click="toProfile" >profile</button>-->
<!-- <button @click="toHome">首页</button>-->
<!-- <button @click="toAbout">关于</button>-->
<keep-alive>
<router-view></router-view>
</keep-alive>
<p>
<button @click="getRouterInstance">获取Router对象</button>
<button @click="getCurrentRouteInstance">获取Route对象</button>
</p>
</div>
</template>
如果组件的周期不再销毁,那么生命状态则发生了改变
在访问时是被激活的状态
如果离开了组件时,则是非激活状态
对应了两个生命周期函数:
activated () {
// todo ...
}
deactivated () {
// todo ...
}
注意!!!上述的函数仅对keep-alive处理的组件有效
三、关于重定向路由BUG问题
/router/index.js
父级路由
/* 重定向首页路由配置 */
{
path : '', /* 缺省值默认指向 '/' */
redirect : '/home',
},
子级路由
children : [ /* 设置子路由 */
{
path : '', /* 这个缺省默认/home */
redirect : 'news',
},
重定向home的时候触发子路由的重定向
向下继续重定向到/home/news
解决方案:
移除子路由的重定向,在组件初始化时重定向一次,后续不再重定向
还有要记录用户之前访问的组件的路由,回到之前的父组件时访问的子组件
<template>
<div>
<h3>这是首页Home组件</h3>
<p>
首页Home组件的内容 <br>
<router-link to="/home/news">新闻列表</router-link>
<router-link to="/home/messages">消息列表</router-link>
</p>
<router-view></router-view>
</div>
</template> <script>
export default {
name: "Home",
created() { },
data () {
return {
path : '/home/news'
}
},
activated() {
this.$router.push(this.path);
},
// deactivated() {
// this.path = this.$route.path;
// }
beforeRouteLeave (to, from, next) {
this.path = this.$route.path;
next();
}
}
</script> <style scoped> </style>
四、Keep-Alive的两个属性
<keep-alive
include="Home,Message"
exclude="News,Profile"
>
<router-view></router-view>
</keep-alive>
include表示需要缓存在里面的组件
exclude表示排除,不要缓存的组件
默认是使用正则表达式,符合正则规则的组件名称,就会把该组件选中
也可以是直接写组件的名称表示,注意不要有空格
组件的名称就是这个:
用途主要是为了排除特定不需要缓存的组件,一般需要缓存的不需要填写属性表示了
【Vue】Re18 Router 第五部分(KeepAlive)的更多相关文章
- Vue.js(23)之 keepAlive和activated
阅读: vue中前进刷新.后退缓存用户浏览数据和浏览位置的实践 keep-alive 组件级缓存 keep-alive <keep-alive> 包裹动态组件时,会缓存不活动的组件实例,而 ...
- 三、vue之router
三.vue之router 此时vue的脚手架.创建项目已经完成. ... vue的运行流程 index.html-->main.js-->App.vue-->router/index ...
- Vue中router两种传参方式
Vue中router两种传参方式 1.Vue中router使用query传参 相关Html: <!DOCTYPE html> <html lang="en"> ...
- 四 Vue学习 router学习
index.js: 按需加载组件: const login = r => require.ensure([], () => r(require('@/page/login')), 'log ...
- Vue基础系列(五)——Vue中的指令(中)
写在前面的话: 文章是个人学习过程中的总结,为方便以后回头在学习. 文章中会参考官方文档和其他的一些文章,示例均为亲自编写和实践,若有写的不对的地方欢迎大家和我一起交流. VUE基础系列目录 < ...
- vue 中router.go;router.push和router.replace的区别
vue 中router.go:router.push和router.replace的区别:https://blog.csdn.net/div_ma/article/details/79467165 t ...
- 【vue】 router.beforeEach
import store from '@/store' const Vue = require('vue') const Router = require('vue-router') Vue.use( ...
- vue & this.$router.resolve
vue & this.$router.resolve gotoAutoUpdate (query = {}) { const { href } = this.$router.resolve({ ...
- Vue中router路由的使用、router-link的使用(在项目中的实际运用方式)
文章目录 1.先看router中的index.js文件 2.router-link的使用 3.实现的效果 前提:router已经安装 1.先看router中的index.js文件 import Vue ...
- vue中router使用keep-alive缓存页面的注意事项
<keep-alive exclude="QRCode"> <router-view></router-view> </keep-aliv ...
随机推荐
- python 如何判断一组数呈上升还是下降趋势
1. python 判断一组数呈上升还是下降趋势的方法 要判断一组数(数列)是呈上升趋势.下降趋势还是无明显趋势,我们可以比较数列中相邻元素的差值.如果大部分差值都是正数,则数列呈上升趋势:如果大部分 ...
- SQL SERVER 2012的安装
1.将光盘镜像用虚拟光驱加载(WIN10自带虚拟光驱) 2.双击setup.exe 3.选择"安装"-"全新 SQL Server 独立安装或向现有安装添加功能" ...
- vue排行榜 加单位
- 在线HMAC加密工具
在线HMAC加密工具提供一站式服务,支持MD5至SHA512.RIPEMD160及SM3等多种哈希算法,用户可便捷选择算法并生成安全的HMAC散列值,确保消息完整性与验证来源.适用于开发调试.网络安全 ...
- 【iOS】Class对构造简洁代码很有帮助
(这到底取的是什么标题啊) 首先先看这段代码(有删减) @property (nonatomic, copy)NSMutableArray <NSMutableArray *>*datas ...
- js-文件读写和上传下载的简单例子01
现下,网络越来越快,浏览器的功能和性能越来越好,所以很多时候,已经不需要一些复杂的框架来实现不是非常复杂的功能. 我们只有在以下情况才会考虑使用框架或者现成的第三方组件: 1.功能复杂,自己写没有必要 ...
- Atcoder Beginner Contest 324 G Generate Arrays 题解-Treap
为了更好的阅读体验,请点击这里 题目链接 套上平衡树板子就能做的很快的题,然后因为是指针存树,因此交换只需要把序列大小较小的挨个拿出来插到相应的地方即可.复杂度 \(O(N \log^2 N)\). ...
- hynitron ts 驱动分析
# hynitron ts 驱动分析 背景 在公司项目中搞LCD移植的时候,在TP功能上,有时候频繁操作屏幕时会导致i2c总线返回-2错误. 问题描述: 1.安卓桌面起来以后,点击屏幕有响应. 2.此 ...
- 在SMT32程序HEX文件中加入固件版本信息
将固件版本信息定义成一个常量存放在程序中,需要的时候可以通过串口等接口查询代码版本信息,另一种,是利用编译器的语法,将固定的信息保存到某地. #define VERINFO_ADDR_BASE (0x ...
- python中dict和list的数据结构
要理解dict的有关内容需要你理解哈希表(map)的相关基础知识,这个其实是<算法与数据结构>里面的内容. 1.list和tuple其实是用链表顺序存储的,也就是前一个元素中存储了下一个元 ...