From 3bf875841889adbc7fb02a8312ea7e9ad11a2ec4 Mon Sep 17 00:00:00 2001 From: Syngnat Date: Thu, 19 Mar 2026 20:46:46 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20perf(App/handleNewQuery):?= =?UTF-8?q?=20=E7=BC=93=E5=AD=98=20handleNewQuery=20=E5=B9=B6=E6=B6=88?= =?UTF-8?q?=E9=99=A4=20Tab=20ID=20=E7=A2=B0=E6=92=9E=E9=A3=8E=E9=99=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 handleNewQuery 改为 useCallback,减少 useEffect 中事件监听器的无效重绑定 - Tab ID 生成方式改为 Date.now() + 随机后缀,与项目既有模式一致 --- frontend/src/App.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 41d0676..b9d22ee 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -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();