import React, { useEffect, useRef, useState } from "react"; import { Button } from "@/components/ui/button"; import { RotateCw } from "lucide-react"; import Markdown from "react-markdown"; function ResultAI({ completion, isLoading, onCompletion, error, }: { completion: string; isLoading: boolean; onCompletion: () => void; error: string; }) { const scrollRef = useRef(null); const [autoScroll, setAutoScroll] = useState(false); useEffect(() => { setAutoScroll(isLoading); }, [isLoading]); useEffect(() => { if (!autoScroll) { return; } scrollRef.current?.scrollTo(0, scrollRef.current.scrollHeight); }, [completion, autoScroll]); function onScroll(e: HTMLElement) { if (!isLoading) { return; } const hitBottom = e.scrollTop + e.clientHeight >= e.scrollHeight - 15; if (hitBottom !== autoScroll) { setAutoScroll(hitBottom); } } return (
{isLoading && (
AI 分析中...
)}
onScroll(e.currentTarget)} className="min-h-[240px] max-h-[420px] overflow-y-auto rounded-md border bg-background p-3 shadow sm:p-5 dark:border-0 dark:bg-secondary/90 dark:shadow-none" > {error ? (

请求出错了

{error}

) : completion ? ( {completion} ) : isLoading ? (

正在等待 AI 响应...

) : (

暂无解读内容

)} {!isLoading && ( )}
); } export default ResultAI;