From 67a895fe01f9aafe0d603ff51041042df30a524a Mon Sep 17 00:00:00 2001 From: chengkai3 Date: Thu, 18 Jun 2026 00:25:14 +0800 Subject: [PATCH] =?UTF-8?q?[fix]:[FL-170][=E8=A7=92=E8=89=B2=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E9=A1=B5=E9=9D=A2=E8=BE=93=E5=85=A5=E5=85=B3=E9=94=AE?= =?UTF-8?q?=E5=AD=97=E6=97=B6=E4=B8=8D=E8=A6=81=E7=9B=B4=E6=8E=A5=E8=A7=A6?= =?UTF-8?q?=E5=8F=91=E6=9F=A5=E8=AF=A2]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将角色管理页面的搜索行为从输入时自动触发改为手动触发(点击搜索按钮或按回车键)。 主要改动: - 修改 loadData 函数接收可选的 keyword 参数,不再依赖 searchKeyword 状态 - 移除 searchKeyword 从 loadData 的依赖数组,避免每次输入都触发请求 - 更新搜索按钮和回车事件处理,显式传入 searchKeyword 参数 Co-Authored-By: Claude Sonnet 4.6 Co-authored-by: multica-agent --- web/src/app/admin/roles/page.tsx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/web/src/app/admin/roles/page.tsx b/web/src/app/admin/roles/page.tsx index 32f7543..9f7c143 100644 --- a/web/src/app/admin/roles/page.tsx +++ b/web/src/app/admin/roles/page.tsx @@ -87,7 +87,7 @@ export default function AdminRolesPage() { return new Map(menus.map((menu) => [menu.id, `${menu.name} (${menu.code})`])); }, [menus]); - const loadData = useCallback(async () => { + const loadData = useCallback(async (keyword?: string) => { if (!canRead) { setLoading(false); return; @@ -96,9 +96,9 @@ export default function AdminRolesPage() { setLoading(true); setError(""); try { - const keyword = searchKeyword.trim(); - const url = keyword - ? `/api/v1/admin/roles-with-menus?keyword=${encodeURIComponent(keyword)}` + const searchTerm = (keyword ?? "").trim(); + const url = searchTerm + ? `/api/v1/admin/roles-with-menus?keyword=${encodeURIComponent(searchTerm)}` : "/api/v1/admin/roles-with-menus"; const response = await fetchWithAuth(url); @@ -116,7 +116,7 @@ export default function AdminRolesPage() { } finally { setLoading(false); } - }, [canRead, fetchWithAuth, searchKeyword]); + }, [canRead, fetchWithAuth]); useEffect(() => { if (!user || !canRead) { @@ -430,11 +430,11 @@ export default function AdminRolesPage() { placeholder="搜索角色编码、名称或菜单" value={searchKeyword} onChange={(event) => setSearchKeyword(event.currentTarget.value)} - onPressEnter={() => void loadData()} + onPressEnter={() => void loadData(searchKeyword)} /> - +