hookehuyr

✨ feat: 重写返回位置功能

......@@ -12,6 +12,7 @@ export const mainStore = defineStore('main', {
scrollTop: 0,
scrollTopCollection: 0,
scrollTopLike: 0,
scrollTopPerson: 0,
keepPages: 'default', // 很坑爹,空值全部都缓存
};
},
......@@ -39,6 +40,9 @@ export const mainStore = defineStore('main', {
changeScrollTopLike (v) {
this.scrollTopLike = v;
},
changeScrollTopPerson (v) {
this.scrollTopPerson = v;
},
changeKeepPages (page) { // 清空所有缓存,用一个不存在的值覆盖
this.keepPages = page;
},
......
......@@ -316,24 +316,21 @@ onActivated(() => { // keepAlive 重置后执行回调
$("html,body").animate({ "scrollTop": String(scrollTop.value) + 'px' });
});
// 监听记录滚动位置
window.addEventListener('scroll',()=>{
if (window.scrollY) {
store.changeScrollTop(window.scrollY)
}
});
// 更新页面名称,因为不刷新副作用~
document.title = $route.meta.title;
});
// 监听记录滚动位置
window.addEventListener('scroll',()=>{
if (window.scrollY) {
store.changeScrollTop(window.scrollY)
}
const { scrollTop } = storeToRefs(store);
// 嵌套滚动,执行两个,先滚外面再滚里面
_.times(2, () => {
$("html,body").animate({ "scrollTop": String(scrollTop.value) + 'px' });
});
onBeforeRouteLeave(() => {
// 监听记录滚动位置
store.changeScrollTop(window.scrollY)
})
/*********************************************************/
</script>
......
......@@ -140,6 +140,7 @@ const followUser = (status) => {
// TAG: keepAlive 缓存页面
const store = mainStore();
store.keepThisPage($route.meta.name);
const scrollY = ref(0)
onActivated(() => { // keepAlive 重置后执行回调
// TAG: pinia应用,动态刷新数据
......@@ -156,27 +157,24 @@ onActivated(() => { // keepAlive 重置后执行回调
// 触发更新
userInfo.value.prod = arr.value;
const { scrollTop } = storeToRefs(store);
const { scrollTopPerson } = storeToRefs(store);
// 嵌套滚动,执行两个,先滚外面再滚里面
_.times(2, () => {
$("html,body").animate({ "scrollTop": String(scrollTop.value) + 'px' });
$("html,body").animate({ "scrollTop": String(scrollTopPerson.value) + 'px' });
});
// 监听记录滚动位置
window.addEventListener('scroll',()=>{
if (window.scrollY) {
store.changeScrollTop(window.scrollY)
}
});
});
// 监听记录滚动位置
window.addEventListener('scroll',()=>{
if (window.scrollY) {
store.changeScrollTop(window.scrollY)
}
const { scrollTopPerson } = storeToRefs(store);
// 嵌套滚动,执行两个,先滚外面再滚里面
_.times(2, () => {
$("html,body").animate({ "scrollTop": String(scrollTopPerson.value) + 'px' });
});
onBeforeRouteLeave(() => {
store.changeScrollTopPerson(window.scrollY)
})
/*********************************************************/
</script>
......
......@@ -18,7 +18,7 @@ import Cookies from 'js-cookie'
import no_image from '@images/que-shuju@2x.png'
import { mainStore } from '@/store'
import { storeToRefs } from 'pinia'
import { useRoute, useRouter, onBeforeRouteLeave } from 'vue-router'
import { ref } from 'vue'
import axios from '@/utils/axios';
import { Toast } from 'vant';
......@@ -33,12 +33,10 @@ _.times(2, () => {
$("html,body").animate({ "scrollTop": String(scrollTopCollection.value) + 'px' });
});
// 监听记录滚动位置
window.addEventListener('scroll',()=>{
if (window.scrollY) {
onBeforeRouteLeave(() => {
// 监听记录滚动位置
store.changeScrollTopCollection(window.scrollY)
}
});
})
/*****************************************************/
// 处理书籍下作品列表
......
......@@ -18,7 +18,7 @@ import Cookies from 'js-cookie'
import no_image from '@images/que-shuju@2x.png'
import { mainStore } from '@/store'
import { storeToRefs } from 'pinia'
import { useRoute, useRouter, onBeforeRouteLeave } from 'vue-router'
import { ref } from 'vue'
import axios from '@/utils/axios';
import { Toast } from 'vant';
......@@ -33,12 +33,10 @@ _.times(2, () => {
$("html,body").animate({ "scrollTop": String(scrollTopLike.value) + 'px' });
});
// 监听记录滚动位置
window.addEventListener('scroll',()=>{
if (window.scrollY) {
onBeforeRouteLeave(() => {
// 监听记录滚动位置
store.changeScrollTopLike(window.scrollY)
}
});
})
/*****************************************************/
// 处理书籍下作品列表
......
......@@ -65,21 +65,19 @@ onActivated(() => { // keepAlive 重置后执行回调
$("html,body").animate({ "scrollTop": String(scrollTop.value) + 'px' });
});
// 监听记录滚动位置
window.addEventListener('scroll',()=>{
if (window.scrollY) {
store.changeScrollTop(window.scrollY)
}
});
});
// 监听记录滚动位置
window.addEventListener('scroll',()=>{
if (window.scrollY) {
store.changeScrollTop(window.scrollY)
}
const { scrollTop } = storeToRefs(store);
// 嵌套滚动,执行两个,先滚外面再滚里面
_.times(2, () => {
$("html,body").animate({ "scrollTop": String(scrollTop.value) + 'px' });
});
onBeforeRouteLeave(() => {
// 监听记录滚动位置
store.changeScrollTop(window.scrollY)
})
/*********************************************************/
</script>
......