// src/views/AgentChat/hooks/useAutoScroll.ts // 自动滚动 Hook - 消息列表自动滚动到底部 import { useEffect, useRef } from 'react'; import type { Message } from '../constants/messageTypes'; /** * useAutoScroll Hook * * 监听消息列表变化,自动滚动到底部 * * @param messages - 消息列表 * @returns messagesEndRef - 消息列表底部引用(需要绑定到消息列表末尾的 div) * * @example * ```tsx * const { messagesEndRef } = useAutoScroll(messages); * * return ( * * {messages.map(msg => )} *
* * ); * ``` */ export const useAutoScroll = (messages: Message[]) => { const messagesEndRef = useRef(null); useEffect(() => { // 平滑滚动到底部 messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' }); }, [messages]); return { messagesEndRef, }; };