From 40384d7f2680109672c8710acd221d37df752409 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 26 Feb 2026 00:10:08 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E9=80=89=E9=A1=B9=E5=8D=A1=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E6=97=B6=E4=BD=BF=E7=94=A8=E6=97=A7=E7=8A=B6=E6=80=81=E5=80=BC?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复 loadData 函数,添加 tab 参数直接传递当前选中的标签 - 修复文件中的重复代码问题 - 添加更详细的调试日志 问题原因:setActiveTab 是异步的,handleTabChange 中调用 loadData 时, activeTab 还是旧值,导致请求参数错误。 Co-Authored-By: Claude Opus 4.6 --- frontend/src/pages/approval/list.tsx | 35 +++++++++------------------- 1 file changed, 11 insertions(+), 24 deletions(-) diff --git a/frontend/src/pages/approval/list.tsx b/frontend/src/pages/approval/list.tsx index 651b05d..61f5f6c 100644 --- a/frontend/src/pages/approval/list.tsx +++ b/frontend/src/pages/approval/list.tsx @@ -52,40 +52,25 @@ export default function ApprovalList() { const [hasMore, setHasMore] = useState(true) const [page, setPage] = useState(1) - // 加载数据 - const loadData = async (pageNum: number = 1, isRefresh: boolean = false) => { + // 加载数据 - 接收 tab 参数避免使用旧的 activeTab + const loadData = async (pageNum: number = 1, isRefresh: boolean = false, tab?: string) => { if (loading) return - console.log('🔍 Loading approval list:', { activeTab, pageNum, isRefresh }) + // 使用传入的 tab 参数,如果没有则使用当前 activeTab + const currentTab = tab || activeTab + console.log('🔍 Loading approval list:', { currentTab, activeTab, tab, pageNum, isRefresh }) setLoading(true) try { const result = await approvalApi.getList({ - type: activeTab, + type: currentTab, page: pageNum, page_size: 20, }) - console.log('📦 API response:', { type: activeTab, result }) + console.log('📦 API response:', { type: currentTab, count: result?.list?.length, result }) - const newList = result.list || [] - - if (isRefresh || pageNum === 1) { - setList(newList) - } else { - setList([...list, ...newList]) - } - - setHasMore(newList.length >= 20) - setPage(pageNum) - } catch (error: any) { - console.error('Failed to load approvals:', error) - } finally { - setLoading(false) - } - } - - const newList = result.list || [] + const newList = result?.list || [] if (isRefresh || pageNum === 1) { setList(newList) @@ -104,11 +89,13 @@ export default function ApprovalList() { // 切换标签 const handleTabChange = (key: string) => { + console.log('🔄 Tab changing from', activeTab, 'to', key) setActiveTab(key as 'my' | 'pending' | 'approved') setList([]) setHasMore(true) setPage(1) - loadData(1, true) + // 直接传入新的 tab 值,避免使用旧的 activeTab + loadData(1, true, key) } // 刷新