From c89d1d1fe4e820bc9d1a942467a3f1e017b40dac Mon Sep 17 00:00:00 2001 From: wujingjing <gersonwu@qq.com> Date: 星期三, 06 十一月 2024 16:33:36 +0800 Subject: [PATCH] 无关代码删除 --- src/components/chat/hooks/useScrollToBottom.ts | 48 +++++++++++++++++++++++++----------------------- 1 files changed, 25 insertions(+), 23 deletions(-) diff --git a/src/components/chat/hooks/useScrollToBottom.ts b/src/components/chat/hooks/useScrollToBottom.ts index b23e8a4..66a344d 100644 --- a/src/components/chat/hooks/useScrollToBottom.ts +++ b/src/components/chat/hooks/useScrollToBottom.ts @@ -1,37 +1,39 @@ import type { ComputedRef, Ref } from 'vue'; -import { nextTick, onActivated, ref, watch } from 'vue'; +import { nextTick, onActivated, onUnmounted, ref, watch } from 'vue'; import type { ChatMessage } from '../model/types'; +import emitter from '/@/utils/mitt'; +import { debounce } from '/@/utils/util'; export type UseScrollToBottomOption = { chatListDom: Ref<HTMLDivElement>; - displayMessageList: ComputedRef<ChatMessage[]>; }; -export const useScrollToBottom = (option:UseScrollToBottomOption) => { - const {chatListDom,displayMessageList} = option; +export const useScrollToBottom = (option: UseScrollToBottomOption) => { + const { chatListDom } = option; - const scrollToBottom = () => { - if (!chatListDom.value) return; - chatListDom.value.lastElementChild?.scrollIntoView(); - }; - const forbidScroll = ref(false); - watch( - displayMessageList, - () => { - if (forbidScroll.value) return; - nextTick(() => scrollToBottom()); - }, - { - deep: true, - } - ); + const scrollToBottom = () => { + nextTick(() => { + + if (chatListDom.value.scrollHeight > chatListDom.value.clientHeight) { + chatListDom.value.scrollTop = chatListDom.value.scrollHeight - chatListDom.value.clientHeight; + } + }); + }; + const debounceAmisScroll = debounce(({ instance }) => { + scrollToBottom(); + }, 500); + + // emitter.on('amis.page.ready', debounceAmisScroll); + + // onUnmounted(() => { + // emitter.off('amis.page.ready'); + // }); onActivated(() => { - if (forbidScroll.value) return; - nextTick(() => scrollToBottom()); + scrollToBottom(); }); return { - forbidScroll - }; + scrollToBottom, + }; }; -- Gitblit v1.9.3