| | |
| | | import type { ComputedRef, Ref } from 'vue'; |
| | | import { nextTick, onActivated, onUnmounted, ref, watch } from 'vue'; |
| | | import { nextTick, onActivated, onMounted, onUnmounted, ref, watch } from 'vue'; |
| | | import type { ChatMessage } from '../model/types'; |
| | | import emitter from '/@/utils/mitt'; |
| | | import { debounce } from '/@/utils/util'; |
| | |
| | | scrollToBottom(); |
| | | }, 500); |
| | | |
| | | const checkIsBottom = () => { |
| | | // 误差 2像素 |
| | | isBottom.value = Math.abs(chatListDom.value.scrollTop + chatListDom.value.clientHeight - chatListDom.value.scrollHeight) < 2; |
| | | }; |
| | | const isBottom = ref(false); |
| | | onMounted(() => { |
| | | chatListDom.value.addEventListener('scrollend', checkIsBottom); |
| | | }); |
| | | |
| | | onUnmounted(() => { |
| | | chatListDom.value.removeEventListener('scrollend', checkIsBottom); |
| | | }); |
| | | |
| | | // emitter.on('amis.page.ready', debounceAmisScroll); |
| | | |
| | | // onUnmounted(() => { |
| | |
| | | return { |
| | | scrollToBottom, |
| | | scrollToTop, |
| | | isBottom, |
| | | }; |
| | | }; |