fix: prevent query execute event state leak
This commit is contained in:
1 parent
617c15dbfe
commit
f5cf3f4440
1 file changed
+5
-2
@@ -189,7 +189,8 @@ export default function QueriesPage() {
|
||||
const catLabel: Record<string, string> = { all: '全部', '表结构': '表结构', '性能分析': '性能分析', '数据统计': '数据统计', '基础查询': '基础查询' };
|
||||
|
||||
/* ---- Execute ---- */
|
||||
const handleExecute = useCallback(async (page = 1) => {
|
||||
const handleExecute = useCallback(async (pageArg: number | unknown = 1) => {
|
||||
const page = typeof pageArg === 'number' && Number.isFinite(pageArg) ? pageArg : 1;
|
||||
if (!sql || !instanceId) { setError('请选择实例并输入查询语句'); return; }
|
||||
if (/\{(?:table|db|collection)\}/.test(sql)) { setError('SQL 中含有未替换的占位符,请先替换或删除'); return; }
|
||||
setExecuting(true); setError(''); setCurrentPage(page);
|
||||
@@ -209,7 +210,9 @@ export default function QueriesPage() {
|
||||
}
|
||||
} catch (e: unknown) {
|
||||
const raw = (e as { response?: { data?: { detail?: string | Array<{ msg: string }> } } })?.response?.data?.detail;
|
||||
const msg = Array.isArray(raw) ? raw.map(v => v.msg).join('; ') : (raw || '查询失败');
|
||||
const msg = Array.isArray(raw)
|
||||
? raw.map(v => v.msg).join('; ')
|
||||
: (typeof raw === 'string' ? raw : raw ? JSON.stringify(raw) : '查询失败');
|
||||
setError(msg);
|
||||
if (page === 1) {
|
||||
setHistory(prev => [{ id: Date.now(), sql, instance_id: Number(instanceId), database, db_type: dbType, status: 'failed', execution_time_ms: 0, result_preview: msg, created_at: new Date().toISOString(), favorite: false }, ...prev]);
|
||||
|
||||
Reference in new issue
Block a user