vue 监听页面滚动位置 当返回 当前页面时还是在原来的位置

vue 监听页面滚动位置 当返回 当前页面时还是在原来的位置

位置有点乱 自己整理一下

data() {
	return {
	scrollTop: 0,
	}
},
mounted() {
    // 这里的antiShake使用的是防抖函数 防止滚动调用频繁
    window:addEventListener('scroll',antiShake(this.handleScroll,300))
},
methods: {
    handleScroll() {
        // 各种浏览器适配 将获取到的值 赋值给data中的scrollTop
        this.scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
    },
    ...mapActions(['getScrollTopAction']),// 使用stroe 存储 
},
   // 当页面销毁时存储到 stroe中
   destroyed() {
    // 将当前页面滚动的位置 存储到 mapActions 这个 做了多层封装 通过 actions 提交给 mutations 再由 mutations 赋值给state中的
	//scrollTopHome
    this.getScrollTopAction(this.scrollTop);
  },
      created() {
          // 当页面 发生 重新创建 时将在stroe中存储的scrollTop 放到当前页面
          this.scrollTop = this.scrollTopHome //(这个函数来自 mapState)
      },
   // 当页面发生更新时 
  updated() {
    this.$nextTick(()=>{
      // 将存储到state中的页面销毁时的位置 当页面更新时放到当前返回的页面中
      window.scrollTo(0,this.scrollTop)
      // console.log(this.scrollTop);
    })
  }
防抖函数 放到公共.js文件中方便调用
export function antiShake(fun,wait) {
    let timer = null;
    return function (){
        if(timer) clearTimeout(timer)
        timer = setTimeout(()=>{
            fun()
        },wait)
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值