fix(ui): 修复 React key 警告和 forwardRef 问题
- ChatMessage/SessionItem 使用 forwardRef 支持 AnimatePresence - useChat 为 message_received/done 事件生成唯一消息 ID - sessions API 为历史消息添加 ID 字段 - cli 添加 @types/inquirer 依赖
This commit is contained in:
@@ -118,11 +118,11 @@ export function useChat({ sessionId, onError, onSessionNotFound, onSessionUpdate
|
||||
|
||||
case 'done':
|
||||
setState((prev) => {
|
||||
const newMessage: Message = message.payload || {
|
||||
id: Date.now().toString(),
|
||||
const newMessage: Message = {
|
||||
id: message.payload?.id || `assistant-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`,
|
||||
role: 'assistant',
|
||||
content: prev.streamingContent,
|
||||
timestamp: new Date().toISOString(),
|
||||
content: message.payload?.content || prev.streamingContent,
|
||||
timestamp: message.payload?.timestamp || new Date().toISOString(),
|
||||
};
|
||||
return {
|
||||
...prev,
|
||||
@@ -134,11 +134,19 @@ export function useChat({ sessionId, onError, onSessionNotFound, onSessionUpdate
|
||||
break;
|
||||
|
||||
case 'message_received':
|
||||
// 用户消息已确认
|
||||
setState((prev) => ({
|
||||
...prev,
|
||||
messages: [...prev.messages, message.payload],
|
||||
}));
|
||||
// 用户消息已确认 - 构建完整的消息对象
|
||||
setState((prev) => {
|
||||
const userMessage: Message = {
|
||||
id: `user-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`,
|
||||
role: 'user',
|
||||
content: message.payload?.content || '',
|
||||
timestamp: new Date().toISOString(),
|
||||
};
|
||||
return {
|
||||
...prev,
|
||||
messages: [...prev.messages, userMessage],
|
||||
};
|
||||
});
|
||||
break;
|
||||
|
||||
case 'error':
|
||||
|
||||
Reference in New Issue
Block a user