🐛 fix(query-result): 修复SQL执行后结果面板崩溃

- 提前解析当前激活结果页 key
- 避免构造结果 tab 时读取未初始化变量
- 修复 MySQL SELECT 成功返回后编辑器闪退问题
This commit is contained in:
Syngnat
2026-07-08 14:16:36 +08:00
parent dd01d1c3f9
commit c792a30932

View File

@@ -93,6 +93,12 @@ const QueryEditorResultsPanel: React.FC<QueryEditorResultsPanelProps> = ({
const hideTooltipTitle = toggleShortcutLabel
? t('query_editor.results_panel.tooltip.hide_with_shortcut', { shortcut: toggleShortcutLabel })
: t('query_editor.results_panel.tooltip.hide');
const activeResultKeyExists = activeResultKey === QUERY_EDITOR_SQL_LOG_TAB_KEY
? shouldShowSqlLogTab
: resultSets.some((result) => result.key === activeResultKey);
const resolvedActiveResultKey = activeResultKeyExists
? activeResultKey
: resultSets[0]?.key || (shouldShowSqlLogTab ? QUERY_EDITOR_SQL_LOG_TAB_KEY : '');
const handleMessageTextareaKeyDown = (event: React.KeyboardEvent<HTMLTextAreaElement>) => {
if (!(event.ctrlKey || event.metaKey) || event.altKey || event.shiftKey || event.key.toLowerCase() !== 'a') {
@@ -335,12 +341,6 @@ const QueryEditorResultsPanel: React.FC<QueryEditorResultsPanelProps> = ({
}
: null;
const tabItems = logTabItem ? [logTabItem, ...resultTabItems] : resultTabItems;
const resolvedActiveResultKey = (() => {
if (activeResultKey && tabItems.some((item) => item.key === activeResultKey)) return activeResultKey;
if (resultSets[0]?.key) return resultSets[0].key;
return shouldShowSqlLogTab ? QUERY_EDITOR_SQL_LOG_TAB_KEY : '';
})();
const activeResultSet = resultSets.find((rs) => rs.key === resolvedActiveResultKey) || null;
const activeResultUsesDataGrid = Boolean(activeResultSet && activeResultSet.resultType !== 'message' && !isAffectedRowsResult(activeResultSet));