️ perf(App/handleNewQuery): 缓存 handleNewQuery 并消除 Tab ID 碰撞风险

- 将 handleNewQuery 改为 useCallback,减少 useEffect 中事件监听器的无效重绑定
- Tab ID 生成方式改为 Date.now() + 随机后缀,与项目既有模式一致
This commit is contained in:
Syngnat
2026-03-19 20:46:46 +08:00
parent 561d3810da
commit 3bf8758418

View File

@@ -1,4 +1,4 @@
import React, { useState, useEffect, useMemo } from 'react';
import React, { useState, useEffect, useMemo, useCallback } from 'react';
import { Layout, Button, ConfigProvider, theme, message, Modal, Spin, Slider, Progress, Switch, Input, InputNumber, Select } from 'antd';
import zhCN from 'antd/locale/zh_CN';
import { PlusOutlined, ConsoleSqlOutlined, UploadOutlined, DownloadOutlined, CloudDownloadOutlined, BugOutlined, ToolOutlined, GlobalOutlined, InfoCircleOutlined, GithubOutlined, SkinOutlined, CheckOutlined, MinusOutlined, BorderOutlined, CloseOutlined, SettingOutlined, LinkOutlined, BgColorsOutlined, AppstoreOutlined } from '@ant-design/icons';
@@ -986,7 +986,7 @@ function App() {
setAboutLoading(false);
}, []);
const handleNewQuery = () => {
const handleNewQuery = useCallback(() => {
let connId = '';
let db = '';
@@ -1006,14 +1006,14 @@ function App() {
}
addTab({
id: `query-${Date.now()}`,
id: `query-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,
title: '新建查询',
type: 'query',
connectionId: connId,
dbName: db,
query: ''
});
};
}, [activeTabId, tabs, connections, activeContext, addTab]);
const handleImportConnections = async () => {
const res = await (window as any).go.app.App.ImportConfigFile();