From 063ad6e606b07c75a8da672162d5f6e6b34dc06d Mon Sep 17 00:00:00 2001 From: xfy Date: Tue, 28 Jul 2026 14:57:40 +0800 Subject: [PATCH] =?UTF-8?q?fix(mcp):=20=E4=BF=AE=E5=A4=8D=20ConfigCard=20u?= =?UTF-8?q?se=5Feffect=20=E6=AD=BB=E5=BE=AA=E7=8E=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit use_effect 内读 loading() 作为重入 guard,使 loading 成为响应式依赖: effect 设 loading=true → loading 变化触发 effect 重跑 → 早退; fetch 完成设 loading=false → loading 变化再次触发 effect → 再次跑, 无限循环,导致 /api/get_mcp_client_configs 被疯狂调用。 use_effect 本身按依赖去重,config_token 不变就不会重跑,guard 多余; 删掉 effect 内的 loading() 读取,loading 不再是依赖,循环解除。 (on_manual_input 内的 loading 读取在事件闭包里,不构成响应式订阅,保留。) --- src/pages/admin/mcp.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/admin/mcp.rs b/src/pages/admin/mcp.rs index 2efe292..e69bfe8 100644 --- a/src/pages/admin/mcp.rs +++ b/src/pages/admin/mcp.rs @@ -452,7 +452,6 @@ fn ConfigCard() -> Element { use_effect(move || { let token = config_token(); let Some(t) = token else { return; }; - if loading() { return; } loading.set(true); manual_token.set(t.clone()); spawn(async move {