diff --git a/chatdesk-ui/components/messages/message.tsx b/chatdesk-ui/components/messages/message.tsx index be7763e..cc416a0 100644 --- a/chatdesk-ui/components/messages/message.tsx +++ b/chatdesk-ui/components/messages/message.tsx @@ -36,6 +36,41 @@ interface MessageProps { onSubmitEdit: (value: string, sequenceNumber: number) => void } + +// ✅ 提取为组件,放在同文件中也没问题 +const MessageContent: React.FC<{ content: string }> = ({ content }) => { + const [showThink, setShowThink] = useState(false) + + const thinkMatch = content.match(/([\s\S]*?)<\/think>/i) + const thinkContent = thinkMatch?.[1]?.trim() || "" + const visibleContent = thinkMatch + ? content.replace(thinkMatch[0], "").trim() + : content.trim() + + return ( +
+ + + {thinkMatch && thinkContent && ( +
+ + + {showThink && ( +
+ +
+ )} +
+ )} +
+ ) +} + export const Message: FC = ({ message, fileItems, @@ -313,45 +348,7 @@ export const Message: FC = ({ // - (() => { - const [showThink, setShowThink] = useState(false) - - // 动态提取 内容块 - const thinkMatch = message.content.match(/([\s\S]*?)<\/think>/i) - - // 思考区域(如果匹配到了) - const thinkContent = thinkMatch?.[1]?.trim() || "" - - // 可见区域 = 原始内容去除 区域 - const visibleContent = thinkMatch - ? message.content.replace(thinkMatch[0], "").trim() - : message.content.trim() - - return ( -
- {/* 主内容显示 */} - - - {/* 有 匹配时,才展示按钮 */} - {thinkMatch && thinkContent && ( -
- - - {showThink && ( -
- -
- )} -
- )} -
- ) - })() +