keep-alive 被 beforeRouteEnter 骗了
大家中秋假期快乐,假期分享一些实战文章给大家,原创不易,欢迎转发,一起学习
现在大家基本都在单页应用
里面使用了 keep-alive
来缓存不活动的组件实例,而不是销毁它们
。
如果你还没有使用,可以看看官方的介绍(如果大家需要一些新手入门的文章可以留言哈):https://cn.vuejs.org/v2/api/#...
用法很简单:主要是包裹
<keep-alive>
...
</keep-alive>
使用场景:
和
单页应用
环境配合使用的:
<keep-alive>
<router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
有以下几个常识
,如果你还没有使用 keep-alive 的话,可以记下来:
1、组件内的第一次的生命周期
:
mounted ==> activated
2、切换路由再次进来只会触发 activated
3、可以通过 router 的钩子函数 beforeRouteEnter
来做一些辅助判断
具体可以看看官方的这个的文档:https://router.vuejs.org/zh/g...
不能获取组件实例
this
比如你要设置 data 里面的变量,抱歉,这里操作不了,那如何做呢?
很多熟悉的人会想到 next
操作 vm 对象
:
beforeRouteEnter (to, from, next) {
next(vm => {
// 通过 `vm` 访问组件实例
})
}
是的,这里你可以通过 from.name
来做一些判断,比如如下代码片段:
需求很简单,判断一下从
特定路由
切换过来,做一个判断赋值给 data 的 isFromTester
beforeRouteEnter (to, from, next) {
console.log(to, from);
if (from.name == 'Tester') {
next(vm => {
vm.isFromTester = true
})
} else {
next(vm => {
vm.isFromTester = false
})
}
}
然后你就可以在 activated 生命周期直接判断啦
activated () {
if (this.isFromTester) {
//...
}
}
大功告成啦
抱歉,这里的 activated 不会那么及时地更新 isFromTester,所以
第一次你获取的不是 true
,第二次是可以的
那我们就要来刨根问底了,到底为啥不是及时更新的呢?
有没有人想到了 vue 里面一个很常见的 nextTick
这个东西?
是滴,就是它,它骗了 activated,真相在这里:(我们省去了很多路由事件里面自己的处理逻辑和 vue activated 的 hook 的触发)
来源:https://segmentfault.com/a/1190000016493658
keep-alive 被 beforeRouteEnter 骗了的更多相关文章
- SQL Server 2012故障转移的looksalive check和is alive check
什么是looksalive check和is alive check SQL Server故障转移集群是建立在windows集群服务上的一种热备的高可用方案.在集群运行过程中,windows集群服务定 ...
- Keeping Async Methods Alive
Consider a type that will print out a message when it’s finalized, and that has a Dispose method whi ...
- 转载:有关SQL server connection Keep Alive 的FAQ(3)
转载:http://blogs.msdn.com/b/apgcdsd/archive/2012/06/07/sql-server-connection-keep-alive-faq-3.aspx 这个 ...
- 转载:有关SQL server connection Keep Alive 的FAQ(2)
转: http://blogs.msdn.com/b/apgcdsd/archive/2012/05/18/sql-server-connection-keep-alive-faq-2.aspx 在下 ...
- BZOJ-2049 Cave洞穴勘测 动态树Link-Cut-Tree (并查集骗分TAT)
2049: [Sdoi2008]Cave 洞穴勘测 Time Limit: 10 Sec Memory Limit: 259 MB Submit: 5833 Solved: 2666 [Submit] ...
- Keep Alive
跳板机时经常出现连接被断开的情况.如果发生这种情况,请在客户端配置Keep Alive设置,具体方法参考如下: Windows: secureCRT:Properties -> Terminal ...
- 51Nod 算法马拉松15 记一次悲壮而又开心的骗分比赛
OwO 故事的起源大概是zcg前天发现51Nod晚上有场马拉松,然后他就很开心的过去打了 神奇的故事就开始了: 晚上的时候我当时貌似正在写线段树?然后看见zcg一脸激动告诉我第一题有九个点直接输出B就 ...
- How to Keep Alive SSH Sessions
How to Keep Alive SSH Sessions Many NAT firewalls time out idle sessions after a certain period of t ...
- keep alive的相关介绍
无论Windows还是linux,Keepalive就三个配置参数.下文以linux环境为介绍. Technorati 标签: keepalive tcp_sock结构体中有三个有关的 ...
随机推荐
- 什么是LMDB闪电记忆映射数据库
LightningMemory-MappedDatabase(LMDB)是一个软件库,它以键值存储的形式提供高性能的嵌入式事务数据库.LMDB是用C语言编写的,具有多种编程语言的API绑定.LMDB将 ...
- flask之日志的配置
1. 项目中,日志和配置文件都是单独在一个文件夹中,一般log文件夹和config文件夹,两个文件夹和manage.py在同一个目录下. 2. 配置日志前,先给flask装上script脚本扩展,Fl ...
- WebStorm / IDEA最新激活码2019----100%随时可用
亲测日期:2019.12.24 网址里面有 lookdiv.com 里面的钥匙就是lookdiv.com 或者直接点击备用码 http://lookdiv.com/spare.html 进入可能会比 ...
- SpringBoot整合表单验证注解@Validated,以及分组验证
首先引入jar包 <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate ...
- 【leetcode】1138. Alphabet Board Path
题目如下: On an alphabet board, we start at position (0, 0), corresponding to character board[0][0]. Her ...
- React Native 中 static的navigationOptions中的点击事件不能用this
想在某个页面中设置导航栏,title + 左右按钮(按钮上肯定需要有事件) static navigationOptions = ({ navigation, navigationOptions }) ...
- apiCloud通过ajax获取数据
<!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...
- UVALive 3958 Weird Numbers (负进制数)
Weird Numbers 题目链接: http://acm.hust.edu.cn/vjudge/contest/129733#problem/F Description Binary number ...
- 大数据笔记(一)——Hadoop的起源与背景知识
一.大数据的5个特征(IBM提出): Volume(大量) Velocity(高速) Variety(多样) Value(价值) Varacity(真实性) 二.OLTP与OLAP 1.OLTP:联机 ...
- C++模板声明与实现分开--由此想到的编译,链接原理
参考了以下两篇文章: C++编译链接原理简介 语言程序编译过程 2 问题来源:当模板文件的实现与声明分开在不同文件中时,链接时会提示找不到相应模板函数,如下 一,编译和链接的大概原理: 1,编译,遍 ...