热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

工作章vue组件返回时保留滚动的位置

最近做项目时遇到一个问题,产品搜索后出来相关的列表,点击相关商品进入它的详情,返回后组件被重新创建,但产品需求是需要保留进入

最近做项目时遇到一个问题,产品搜索后出来相关的列表,点击相关商品进入它的详情,返回后组件被重新创建,但产品需求是需要保留进入详情是列表的位置的。

一.实现思路

首先有三个页面(首页,搜索列表页,详情页),从首页到搜索列表页是不需要保存组件的,从详情页到搜索列表页是需要记录列表位置的。

首页:

(搜索页:从首页来)
(搜索页:详情页来)

1.先保持搜索列表页组件状态不刷新

2.从首页进来,组件不刷新,会导致列表存在,而我们的需求是列表是不能存在的,因此利用vue-router的组件内的守卫beforeRouteEnter在渲染该组件的对应路由时把列表清空。

//进入搜索页面时
beforeRouteEnter(to, from, next) {console.log(to,from);if (from.path == '/') {console.log("/");next(vm => {vm.seachlist=[]; //清空搜索列表vm.keyword=""; //清空关键字});} },

3.从详情页进入搜索列表页时,列表存在,但列表位置不在离开的位置,所以我们需要在离开时记录离开时滚动的位置,并将列表滚动到相应的位置。

记录位置:

//初始化better-scrollinitbetterscore:function () {this.scroll = new Bscroll(this.$refs.mescroll, {scrollY:true,pullUpLoad:true,click:true,})this.scroll.on('pullingUp',()=>{this.getseachlist();})//监听scroll的滚动,获取它滚动的高度this.scroll.on('scroll',(obj)=>{this.scrollTop=obj.y;})},

设置位置:

//进入该页面时beforeRouteEnter(to, from, next) {console.log(to,from);if (from.path == '/') {console.log("/");next(vm => {vm.seachlist=[];vm.keyword="";});} else {next(vm => {vm.scroll.scrollTo(0,vm.scrollTop);vm.scroll.refresh(); //重新计算 better-scroll,当 DOM 结构发生变化的时候务必要调用确保滚动的效果正常})}},

效果图:

以上就是自己的决解方法,欢迎留言指教哦!

转:https://juejin.im/post/5c999238e51d4550752529c6



推荐阅读
  • 微信小程序中实现位置获取的全面指南
    本文详细介绍了如何在微信小程序中实现地理位置的获取,包括通过微信官方API和腾讯地图API两种方式。文中不仅涵盖了必要的准备工作,如申请开发者密钥、下载并配置SDK等,还提供了处理用户授权及位置信息获取的具体代码示例。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 本文介绍如何使用 Angular 6 的 HttpClient 模块来获取 HTTP 响应头,包括代码示例和常见问题的解决方案。 ... [详细]
  • 微信小程序:授权登录与手机号绑定
    本文详细介绍了微信小程序中用户授权登录及绑定手机号的流程,结合官方指引和实际开发经验,提供了一套完整的实现方案,帮助开发者更好地理解和应用。 ... [详细]
  • 本文探讨了如何在Node.js环境中,通过Tor网络使用的SOCKS5代理执行HTTP请求。文中不仅提供了基础的实现方法,还介绍了几种常用的库和工具,帮助开发者解决遇到的问题。 ... [详细]
  • Symfony是一个功能强大的PHP框架,以其依赖注入(DI)特性著称。许多流行的PHP框架如Drupal和Laravel的核心组件都基于Symfony构建。本文将详细介绍Symfony的安装方法及其基本使用。 ... [详细]
  • 为了解决不同服务器间共享图片的需求,我们最初考虑建立一个FTP图片服务器。然而,考虑到项目是一个简单的CMS系统,为了简化流程,团队决定探索七牛云存储的解决方案。本文将详细介绍使用七牛云存储的过程和心得。 ... [详细]
  • JavaScript中的数组是数据集合的核心结构之一,内置了多种实用的方法。掌握这些方法不仅能提高开发效率,还能显著提升代码的质量和可读性。本文将详细介绍数组的创建方式及常见操作方法。 ... [详细]
  • 本文将详细介绍如何在没有显示器的情况下,使用Raspberry Pi Imager为树莓派4B安装操作系统,并进行基本配置,包括设置SSH、WiFi连接以及更新软件源。 ... [详细]
  • 本文探讨了如何利用HTML5和JavaScript在浏览器中进行本地文件的读取和写入操作,并介绍了获取本地文件路径的方法。HTML5提供了一系列API,使得这些操作变得更加简便和安全。 ... [详细]
  • 本文详细解析了 offset、client 和 page 坐标系统的不同之处。offset 是相对于当前元素的边界框的距离,与滚动条无关;client 是相对于可视区域(viewport)的距离,也与滚动条无关;page 则是相对于整个文档的距离,受滚动条位置影响。 ... [详细]
  • 本文提供了多种方法来计算给定年份和月份的起始日和结束日,并进一步探讨了如何根据年、月、周获取特定周的起始日和结束日。 ... [详细]
  • 理解文档对象模型(DOM)
    本文介绍了文档对象模型(DOM)的基本概念,包括其作为HTML文档的节点树结构,以及如何通过JavaScript操作DOM来实现网页的动态交互。 ... [详细]
  • 本文详细探讨了JavaScript中四种获取CSS样式的不同方法:style、currentStyle、getComputedStyle和getBoundingClientRect。每种方法的适用场景及其兼容性问题,并提供了解决方案。 ... [详细]
  • 本文探讨了在React项目中实现子组件向父组件传递数据的方法,包括通过回调函数和使用React状态管理工具。 ... [详细]
author-avatar
伊金芳60442
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有