From a24f2721e6c5862e4deca8d6e62888d728c096c4 Mon Sep 17 00:00:00 2001 From: yml2213 Date: Wed, 19 Aug 2026 18:58:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=8E=A5=E5=8D=95=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E6=97=A0=E6=B3=95=E6=96=B0=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../frontend/src/pages/admin/panels/ProductRulesPanel.tsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/apps/frontend/src/pages/admin/panels/ProductRulesPanel.tsx b/apps/frontend/src/pages/admin/panels/ProductRulesPanel.tsx index 49ca48a9..dc036d66 100644 --- a/apps/frontend/src/pages/admin/panels/ProductRulesPanel.tsx +++ b/apps/frontend/src/pages/admin/panels/ProductRulesPanel.tsx @@ -26,7 +26,7 @@ import { Typography, } from 'antd' import type { TableColumnsType } from 'antd' -import { useEffect, useMemo, useState } from 'react' +import { useEffect, useMemo, useRef, useState } from 'react' import { useNavigate, useSearchParams } from 'react-router' import { @@ -51,6 +51,7 @@ export default function ProductRulesPanel() { const [form] = Form.useForm() const navigate = useNavigate() const [searchParams] = useSearchParams() + const hasInitializedRuleSelection = useRef(false) const [editingRule, setEditingRule] = useState(null) const [activeMappingId, setActiveMappingId] = useState(null) @@ -113,9 +114,10 @@ export default function ProductRulesPanel() { ]), ) - // Default select first rule if none selected when list loads + // 首次加载时默认选中第一条;新建时必须保留空表单,不能再次自动选回旧模板。 useEffect(() => { - if (!editingRule && rules.length > 0) { + if (!hasInitializedRuleSelection.current && !editingRule && rules.length > 0) { + hasInitializedRuleSelection.current = true editRule(rules[0]) } }, [rules, editingRule])