Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Hooke
/
tswj
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
hookehuyr
2022-05-16 09:55:24 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
0ed23f661a944c21bafbd30f1bd87fe53de21990
0ed23f66
1 parent
b1e04a42
✨ feat: 重写返回位置功能
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
43 additions
and
50 deletions
src/store/index.js
src/views/client/bookDetail.vue
src/views/client/personIndex.vue
src/views/me/collection.vue
src/views/me/like.vue
src/views/me/unwatchList.vue
src/store/index.js
View file @
0ed23f6
...
...
@@ -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
;
},
...
...
src/views/client/bookDetail.vue
View file @
0ed23f6
...
...
@@ -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>
...
...
src/views/client/personIndex.vue
View file @
0ed23f6
...
...
@@ -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 { scrollTop
Person
} = storeToRefs(store);
// 嵌套滚动,执行两个,先滚外面再滚里面
_.times(2, () => {
$("html,body").animate({ "scrollTop": String(scrollTop.value) + 'px' });
$("html,body").animate({ "scrollTop": String(scrollTop
Person
.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>
...
...
src/views/me/collection.vue
View file @
0ed23f6
...
...
@@ -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) {
store.changeScrollTopCollection(window.scrollY)
}
});
onBeforeRouteLeave(() => {
// 监听记录滚动位置
store.changeScrollTopCollection(window.scrollY)
})
/*****************************************************/
// 处理书籍下作品列表
...
...
src/views/me/like.vue
View file @
0ed23f6
...
...
@@ -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) {
store.changeScrollTopLike(window.scrollY)
}
});
onBeforeRouteLeave(() => {
// 监听记录滚动位置
store.changeScrollTopLike(window.scrollY)
})
/*****************************************************/
// 处理书籍下作品列表
...
...
src/views/me/unwatchList.vue
View file @
0ed23f6
...
...
@@ -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>
...
...
Please
register
or
login
to post a comment