From 28e6135f8c37117b585db56f15dece2bc9e251c1 Mon Sep 17 00:00:00 2001 From: one Date: Mon, 11 Aug 2025 13:59:03 +0800 Subject: [PATCH] fix(CodeBlockView): initial view mode (#9047) --- .../src/components/CodeBlockView/view.tsx | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/renderer/src/components/CodeBlockView/view.tsx b/src/renderer/src/components/CodeBlockView/view.tsx index 3a5975a901..356646f73a 100644 --- a/src/renderer/src/components/CodeBlockView/view.tsx +++ b/src/renderer/src/components/CodeBlockView/view.tsx @@ -58,9 +58,12 @@ export const CodeBlockView: React.FC = memo(({ children, language, onSave const { t } = useTranslation() const { codeEditor, codeExecution, codeImageTools, codeCollapsible, codeWrappable } = useSettings() - const [viewState, setViewState] = useState({ - mode: 'special' as ViewMode, - previousMode: 'special' as ViewMode + const [viewState, setViewState] = useState(() => { + const initialMode = SPECIAL_VIEWS.includes(language) ? 'special' : 'source' + return { + mode: initialMode as ViewMode, + previousMode: initialMode as ViewMode + } }) const { mode: viewMode } = viewState @@ -96,10 +99,18 @@ export const CodeBlockView: React.FC = memo(({ children, language, onSave const hasSpecialView = useMemo(() => SPECIAL_VIEWS.includes(language), [language]) + // TODO: 考虑移除 const isInSpecialView = useMemo(() => { return hasSpecialView && viewMode === 'special' }, [hasSpecialView, viewMode]) + // 不支持特殊视图时回退到 source + useEffect(() => { + if (!hasSpecialView && viewMode !== 'source') { + setViewMode('source') + } + }, [hasSpecialView, viewMode, setViewMode]) + const [expandOverride, setExpandOverride] = useState(!codeCollapsible) const [unwrapOverride, setUnwrapOverride] = useState(!codeWrappable)