diff --git a/web/src/components/playground/OptimizedComponents.js b/web/src/components/playground/OptimizedComponents.js index baf39273..92b57bec 100644 --- a/web/src/components/playground/OptimizedComponents.js +++ b/web/src/components/playground/OptimizedComponents.js @@ -12,6 +12,7 @@ export const OptimizedMessageContent = React.memo(MessageContent, (prevProps, ne prevProps.message.content === nextProps.message.content && prevProps.message.status === nextProps.message.status && prevProps.message.role === nextProps.message.role && + prevProps.message.reasoningContent === nextProps.message.reasoningContent && prevProps.message.isReasoningExpanded === nextProps.message.isReasoningExpanded && prevProps.isEditing === nextProps.isEditing && prevProps.editValue === nextProps.editValue && diff --git a/web/src/components/playground/ThinkingContent.js b/web/src/components/playground/ThinkingContent.js index 9636b073..6cd91dd8 100644 --- a/web/src/components/playground/ThinkingContent.js +++ b/web/src/components/playground/ThinkingContent.js @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useEffect, useRef } from 'react'; import { Typography } from '@douyinfe/semi-ui'; import MarkdownRenderer from '../common/markdown/MarkdownRenderer'; import { ChevronRight, ChevronUp, Brain, Loader2 } from 'lucide-react'; @@ -12,12 +12,19 @@ const ThinkingContent = ({ onToggleReasoningExpansion }) => { const { t } = useTranslation(); + const scrollRef = useRef(null); if (!finalExtractedThinkingContent) return null; const isThinkingStatus = message.status === 'loading' || message.status === 'incomplete'; const headerText = (isThinkingStatus && !message.isThinkingComplete) ? t('思考中...') : t('思考过程'); + useEffect(() => { + if (scrollRef.current) { + scrollRef.current.scrollTop = scrollRef.current.scrollHeight; + } + }, [finalExtractedThinkingContent, message.isReasoningExpanded]); + return (