vue中 beforeRouteLeave 生命周期函数
2024-10-21 13:32:37
beforeRouteLeave
需求描述
在使用 element-UI的table 的时候,有这么一个需求。从一个页面切换到另一个页面,再切回来的时候,滚动条的位置不变。
需求:滚动浏览列表页,出现滚动条,点击用户名之后,跳转到商铺管理(发生路由跳转)。从商铺列表返回到信息列表之后,列表页还是之前所浏览的位置,而不是到列表页的顶部。
解决方案:
使用 beforeRouteLeave 来记录路由跳转之前滚动条的位置
使用keepAlive来缓存信息列表状态,路由切换到信息列表的时候回触发 activated。
在 activated 中将beforeRouteLeave 中记录的位置赋值给引起滚动条滚动元素的 scrollTop。
此时需要使用到 beforeRouteLeave 这个生命周期函数。
beforeRouteLeave的用法
** beforeRouteLeave(to, from, next)** : 离开路由之前执行的函数,可用于页面的反向传值,页面跳转。
to :跳转到哪个页面
from:从哪个页面跳转
next:相当于一个按钮开启一样。
具体解决方案
具体解决方案:(el-table 中引起滚动条滚动的元素是 el-table__body-wrapper):
beforeRouteLeave
需求描述
在使用 element-UI的table 的时候,有这么一个需求。从一个页面切换到另一个页面,再切回来的时候,滚动条的位置不变。 需求:滚动浏览列表页,出现滚动条,点击用户名之后,跳转到商铺管理(发生路由跳转)。从商铺列表返回到信息列表之后,列表页还是之前所浏览的位置,而不是到列表页的顶部。 解决方案: 使用 beforeRouteLeave 来记录路由跳转之前滚动条的位置
使用keepAlive来缓存信息列表状态,路由切换到信息列表的时候回触发 activated。
在 activated 中将beforeRouteLeave 中记录的位置赋值给引起滚动条滚动元素的 scrollTop。
此时需要使用到 beforeRouteLeave 这个生命周期函数。
beforeRouteLeave的用法
** beforeRouteLeave(to, from, next)** : 离开路由之前执行的函数,可用于页面的反向传值,页面跳转。 to :跳转到哪个页面
from:从哪个页面跳转
next:相当于一个按钮开启一样。 具体解决方案
具体解决方案:(el-table 中引起滚动条滚动的元素是 el-table__body-wrapper): // 路由跳转之前保存当前滚动条的位置。
beforeRouteLeave(to, from, next) {
this.scroll = document.getElementsByClassName(
"el-table__body-wrapper"
)[0].scrollTop;
next();
},
//使用keepAlive缓存组件状态,页面切换路由会触发 activated 钩子函数。在 activated 中将 之前记录的位置赋值给引起滚动条滚动元素的 scrollTop
activated(){
this.$nextTick(() => {
setTimeout(() => {
// 也可以使用 document.getElementsByClassName("el-table__body-wrapper")[0].scrollTop = this.scroll
this.$refs.table.bodyWrapper.scrollTop = this.scroll;
}, 0);
});
}
最新文章
- 6_PHP AJAX MYSQL
- Guava学习笔记:Preconditions优雅的检验参数
- django缓存
- 转:CentOS 7 安装Nginx
- debian7安装oracle11g
- IE的@cc_on条件编译
- Sicily 1790. Single Round Match
- DEDE里有个编码问题,不支持PHP5.4及以上版本!
- Linux内核分析(七)----并发与竞态
- 【java集合框架源码剖析系列】java源码剖析之ArrayList
- 网站开发进阶(十二)JS实现打印功能(包括打印预览、打印设置等)
- Identity Server 4 - Hybrid Flow - 保护API资源
- Spring学习之旅(八)Spring 基于AspectJ注解配置的AOP编程工作原理初探
- Android 音视频深入 七 学习之路的总结和资料分享
- mysql的高级特性-存储过程
- unwrap bug
- python setattr
- java 8 学习资料
- margin和padding的四种写法
- Python 关于bytes类方法对数字转换的误区, Json的重要性