日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

vue 记录滚动位置_vue 路由跳转记住滚动位置,返回时回到上次滚动位置

發布時間:2025/4/16 64 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vue 记录滚动位置_vue 路由跳转记住滚动位置,返回时回到上次滚动位置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

方法一: 利用Keep-Alive和監聽器

1.首先在路由中引入需要的模塊

{

path: ‘/scrollDemo’,

name: ‘scrollDemo’,

meta: {

keepAlive:true //需要緩存

},

component: resolve=> { require([‘../view/scrollDemo.vue’],

resolve) }

}

2.在App.vue中設置緩存組件

//緩存組件跳轉的頁面

//非緩存組件跳轉頁面

3.在頁面注冊對應的事件

(1). 在data中定義一個初始值 scroll

(2). 在mouted中 ,mouted中的方法代表dom已經加載完畢

window.addEventListener('scroll', this.handleScroll);

(3).methods 用于存放頁面函數

handleScroll () {this.scroll = document.documentElement &&document.documentElement.scrollTop

console.log(this.scroll)

}

4.activated 為keep-alive加載時調用

activated() {if(this.scroll > 0){

window.scrollTo(0, this.scroll);this.scroll = 0;

window.addEventListener('scroll', this.handleScroll);

}

}

5.deactivated 頁面退出時關閉事件 防止其他頁面出現問題

deactivated(){

window.removeEventListener('scroll', this.handleScroll);

}

方法二:利用beforeRouteLeave和watch

main.js中:

var store = newVuex.Store({ //記得先引入vuex

state: {

recruitScrollY:0},

getters: {

recruitScrollY: state=>state.recruitScrollY

},

mutations: {

changeRecruitScrollY(state, recruitScrollY) {

state.recruitScrollY=recruitScrollY;

}

},

actions: {

},

modules: {}

})

組件中(/flashSaleListX為當前組件,即需要記住滾動條位置的組件):

methods:{

isTabRoute:function() {if (this.$route.path === '/flashSaleListX') {

let recruitScrollY= this.$store.state.recruitScrollY

document.documentElement.scrollTop=recruitScrollY;

}

}

},

watch: {'$route': 'isTabRoute',

},

beforeRouteLeave(to, from, next) {

let position= document.documentElement && document.documentElement.scrollTop; //記錄離開頁面時的位置

if (position == null) position = 0

this.$store.commit('changeRecruitScrollY', position) //離開路由時把位置存起來

next()

}

方法三:(適用于方法二獲取不到滾動位置)

組件中:

··· 內容···

beforeRouteEnter(to, from, next) {

next(vm=>{

const div1=vm.$refs.div1//記錄滾動高度

div1.scrollTop =vm.scroll

})

},

beforeRouteLeave(to, from, next) {

const div1= this.$refs.div1;this.scroll =div1.scrollTop; //data中記得定義變量scroll

next()

}

注:在路由配置中,記住滾動的頁面keep-alive需為true

總結

以上是生活随笔為你收集整理的vue 记录滚动位置_vue 路由跳转记住滚动位置,返回时回到上次滚动位置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。