经过测试,发现,在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
}

这样即实现了。

最新文章

  1. Visual Studio问题集锦:coloader80.dll未正确安装
  2. PHP如何连接MySQL数据库
  3. PHP ServerPush (推送) 技术的探讨
  4. Orchard源码分析(2):Orchard.Web.MvcApplication类(Global)
  5. phpcms 完美实现 导航栏当前栏目高亮
  6. 【转】数据库系统异常排查之DMV
  7. winform Chart控件 获取鼠标处坐标值方法
  8. 移动端远程关闭PC端实现(一)需求设计
  9. cloneNode小结
  10. AngularJS_百度百科
  11. Lambda为什么又称为匿名函数
  12. nginx服务器下 PHP 出现 502 解决方案
  13. BZOJ 4833: [Lydsy1704月赛]最小公倍佩尔数(数论 + 最值反演)
  14. ES--04
  15. 快速解决MariaDB无密码就可以登录的问题
  16. centos6.9 编译安装 zabbix-3.0.15
  17. Javascript面向对象编程(三):非构造函数的继承(对象的深拷贝与浅拷贝)
  18. iOS使用TFHpple解析html
  19. ajax完整请求
  20. Hadoop基准测试

热门文章

  1. this大全,还有谁??????!!!!!!!
  2. 排序--MergeSort 归并排序?
  3. dart时间处理的几个方法
  4. Springcloud之gateway配置及swagger集成
  5. 题解-洛谷P7114 字符串匹配
  6. NOI Online #2 提高组 游戏
  7. xlwt:python的写excel模块
  8. python制作命令行工具——fire
  9. JavaSE17-File&amp;递归&amp;字节流
  10. Docker修改默认的网段