26 lines
655 B
TypeScript
26 lines
655 B
TypeScript
import { useRef, useCallback } from 'react'
|
|
import type { MessageListRef } from '../message-list'
|
|
|
|
/**
|
|
* 消息滚动管理 Hook
|
|
*/
|
|
export function useMessageScroll() {
|
|
const messageListRef = useRef<MessageListRef>(null)
|
|
|
|
const scrollToBottom = useCallback((behavior: ScrollBehavior = 'smooth') => {
|
|
messageListRef.current?.scrollToBottom(behavior)
|
|
}, [])
|
|
|
|
const scrollToBottomDelayed = useCallback((delay = 100, behavior: ScrollBehavior = 'smooth') => {
|
|
setTimeout(() => {
|
|
messageListRef.current?.scrollToBottom(behavior)
|
|
}, delay)
|
|
}, [])
|
|
|
|
return {
|
|
messageListRef,
|
|
scrollToBottom,
|
|
scrollToBottomDelayed,
|
|
}
|
|
}
|