diff --git a/src/renderer/src/pages/home/Inputbar/Inputbar.tsx b/src/renderer/src/pages/home/Inputbar/Inputbar.tsx index 864ea71a21..9a130e45ff 100644 --- a/src/renderer/src/pages/home/Inputbar/Inputbar.tsx +++ b/src/renderer/src/pages/home/Inputbar/Inputbar.tsx @@ -71,6 +71,7 @@ interface Props { let _text = '' let _files: FileType[] = [] +let _mentionedModelsCache: Model[] = [] const Inputbar: FC = ({ assistant: _assistant, setActiveTopic, topic }) => { const [text, setText] = useState(_text) @@ -103,7 +104,8 @@ const Inputbar: FC = ({ assistant: _assistant, setActiveTopic, topic }) = const spaceClickTimer = useRef(null) const [isTranslating, setIsTranslating] = useState(false) const [selectedKnowledgeBases, setSelectedKnowledgeBases] = useState([]) - const [mentionedModels, setMentionedModels] = useState([]) + const [mentionedModels, setMentionedModels] = useState(_mentionedModelsCache) + const mentionedModelsRef = useRef(mentionedModels) const [isDragging, setIsDragging] = useState(false) const [isFileDragging, setIsFileDragging] = useState(false) const [textareaHeight, setTextareaHeight] = useState() @@ -114,6 +116,10 @@ const Inputbar: FC = ({ assistant: _assistant, setActiveTopic, topic }) = const isGenerateImageAssistant = useMemo(() => isGenerateImageModel(model), [model]) const { setTimeoutTimer } = useTimer() + useEffect(() => { + mentionedModelsRef.current = mentionedModels + }, [mentionedModels]) + const isVisionSupported = useMemo( () => (mentionedModels.length > 0 && isVisionModels(mentionedModels)) || @@ -179,6 +185,13 @@ const Inputbar: FC = ({ assistant: _assistant, setActiveTopic, topic }) = _text = text _files = files + useEffect(() => { + // 利用useEffect清理函数在卸载组件时更新状态缓存 + return () => { + _mentionedModelsCache = mentionedModelsRef.current + } + }, []) + const focusTextarea = useCallback(() => { textareaRef.current?.focus() }, [])