经过测试,发现,在home首页的时候,滑动到某一个位置的时候,如果再点击tabbar中的“购物车”、“分类”或者“我的”的时候,再点击到首页的时候,回不到原本滑动到的那个位置。

那么,首先为了让首页不要随意被销毁掉,那么使用了Keep-alive,这边再来回顾下keep-alive。

<keep-alive>包裹动态组件的时候,会缓存不活动的组件实例,而不是销毁它们。可以看作一个抽象的组件,自身不会渲染一个DOM元素,也不会出现在父组件的链中。简而言之,<keep-alive>包裹的组件会被缓存。之后,我为了实现这个效果,在home中加了activated与deactivated函数。先说下这个生命周期钩子,官网说其是在服务器端渲染期间不被调用,说白了其就是在挂载后和更新前被调用的。但如果该组件中没有使用缓存,也就是没有被<keep-alive>包裹的话,activated是不起作用的。而deactivated的触发时机是keep-alive组件停用时调用。当组件在 内被切换,它的 activated 和 deactivated 这两个生命周期钩子函数将会被对应执行。

activated:在vue对象存活的情况下,进入当前存在activated()函数的页面时,一切换页面就会被触发。有的时候,我们的页面在每次切换时需要重新请求数据。比如说,当第一次切换到组件A时,组件A的created、mounted、activated生命周期函数都会被执行,但是页面切换是不会触发created、mounted的,这时候就需要activated。在切换到组件B时,这时候组件A的deactivated的生命周期函数即被触发,在切换组件A,组件A的activated生命周期函数会被触发。

我们来把它带入实际的开发中,在实现切换首页后,又回到原本滑动位置的话。我们可以在home中,先设置离开时,保存一个位置信息。进来时,将位置设置为原来保存的位置信息即可。

首先,我们现在app.vue中,将<keep-alive>包裹住<router-view>:

<template>
<div id="app">
<keep-alive><router-view/>
</keep-alive>
<finaltabbar></finaltabbar>
</div>
</template>

之后在home.vue中使用activated与deactivated:

activated() {
this.$refs.scroll.scrollTo(0,this.saveY,0) },
deactivated() {
// console.log("ddd");
this.saveY = this.$refs.scroll.getscrollY()
// console.log(this.saveY);
}

接着继续在scroll.vue中把封装实现完毕:

 getScrollY() {
return this.scroll ? this.scroll.y : 0
}

这样即实现了。

对于home主页的切换处理的更多相关文章

  1. 【基础】iframe之间的切换(四)

    案例: 打开http://mail.126.com/,定位登录输入框时,却总是定位不到元素,后来发现,登录的内容在一个iframe中. 一.由主页面切换至iframe dr.switchTo().fr ...

  2. Python图形界面开发—wxPython库的布局管理及页面切换

    前言 wxPython是基于Python的跨平台GUI扩展库,对wxWidgets( C++ 编写)封装实现.GUI程序的开发中界面布局是很重要的一个部分,合理的页面布局能够给予用户良好使用体验.虽然 ...

  3. 图解JSP与Servlet的关系

      Servlet是Java提供的用于开发Web服务器应用程序的一个组件,运行在服务器端,由Servlet容器所管理,用于生成动态的内容.Servlet是平台独立的Java类,编写一个Servlet, ...

  4. Android万能的指示器

    说到 ViewPager 指示器,想必大家都不陌生,绝大部分应用中都有这个.使用频率非常之高.但系统对它的支持并不好,自带的 PagerTabStrip 和 PagerTitleStrip 太弱,很难 ...

  5. java-jsp与servlet

    Java Servlet 是运行在带有支持 Java Servlet 规范的解释器的 web 服务器上的 Java 类. 每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服 ...

  6. Hexo博客系列(一)-Windows系统配置Hexo v3.x个人博客环境

    [原文链接]:https://www.tecchen.xyz/blog-hexo-env-01.html 我的个人博客:https://www.tecchen.xyz,博文同步发布到博客园. 由于精力 ...

  7. [译文]casperjs 的API-casper模块

    Casper class: 可以通过这个模块的create()方法来获取这个模块的一个实例,这是最容易的: var casper = require('casper').create(); 我们也可以 ...

  8. selenium 多窗口(windows)及ITargetLocator使用总结

    1. selenium能实现窗口切换的原理 2. 常见命令 2.1 WindowHandle 2.2 WindowHandles 2.3 SwitchTo 3. 使用JavaScript新建窗口 4. ...

  9. 图解 servlet 与jsp的关系

    Servlet是Java提供的用于开发Web服务器应用程序的一个组件,运行在服务器端,由Servlet容器所管理,用于生成动态的内容.Servlet是平台独立的Java类,编写一个Servlet,实际 ...

随机推荐

  1. 通过Dbeaver创建表格的时候,设置主键

    通过Dbeaver创建表格的时候,设置主键 Dbeaver介绍: ​ 这是一个开源的数据库连接工具,你需要安装jre才可以使用这个软件 在使用Dbeaver创建表的时候,会发现,不能直观地设置主键 这 ...

  2. Python学习随笔:使用xlwings读取和操作Execl文件

    一.背景 有2种模块可以对Execl文件,一种是xlwt 方式,需要安装三个库文件 xlrd(读Excel)xlwt(写Excel)xlutils(修改Excel),也是网上介绍文章最多的一种方法,一 ...

  3. Get请求Test

    一.新建测试套 作为管理接口,可按功能分类,也可按业务逻辑分类,根目录下最多一级子目录.运行接口时,可按测试套为单位,整体运行. 二.选择请求类型,输入接口地址 根据接口文档中提供的接口请求类型及地址 ...

  4. 用python讲解数据结构之树的遍历

    树的结构 树(tree)是一种抽象数据类型或是实现这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合 它具有以下的特点: ①每个节点有零个或多个子节点: ②没有父节点的节点称为根节点: ③ ...

  5. js将秒数转换为时分秒格式

    function secondToTimeStr(t) { if (!t) return; if (t < 60) return "00:" + ((i = t) < ...

  6. day105:Mofang:设置页面初始化&更新头像/上传头像&设置页面显示用户基本信息

    目录 1.设置页面初始化 2.更新头像 1.点击头像进入更新头像界面 2.更新头像页面初始化 3.更新头像页面CSS样式 4.头像上传来源选择:相册/相机 5.调用api提供的本地接口从相册/相机提取 ...

  7. eureka配置说明

    以下配置来源于jar中的源码,采用标准两个空格作为缩进 eureka.yml spring: application: name: APPLICATION_NAME # 应用名,在eureka上注册为 ...

  8. 用列表+for循环生成乘法口诀表

    1 # 结合一下列表生成, 准备设计乘法表 2 # numlist = [1,2,3,4,5] 3 # [pow(i,3) for i in numlist] 4 # ## [1, 8, 27, 64 ...

  9. centos7 安装netstat命令工具

    [root@node01 yum.repos.d]# yum install -y net-tools Loaded plugins: fastestmirror Loading mirror spe ...

  10. [日常摸鱼]bzoj1083[SCOI2005]繁忙的都市-最小生成树

    我也不知道为什么我要来写这个-怕是写水题写上瘾了(bu #include<cstdio> #include<algorithm> #define rep(i,n) for(re ...