diff --git a/packages/core/client/src/schema-component/antd/form-v2/Form.tsx b/packages/core/client/src/schema-component/antd/form-v2/Form.tsx index 2acdd3e87..650fa2c64 100644 --- a/packages/core/client/src/schema-component/antd/form-v2/Form.tsx +++ b/packages/core/client/src/schema-component/antd/form-v2/Form.tsx @@ -114,31 +114,36 @@ const WithForm = (props) => { }; }, []); useEffect(() => { - const id = uid(); - form.addEffects(id, () => { + if (linkageRules.length > 0) { + const id = uid(); const linkagefields = []; - return linkageRules.map((v, index) => { - return v.actions?.map((h) => { - if (h.targetFields) { - const fields = h.targetFields.join(','); - return onFieldReact(`*(${fields})`, (field: any, form) => { - linkagefields.push(field); - linkageMergeAction(h, field, v.condition, form?.values); - if (index === linkageRules.length - 1) { - setTimeout(() => - linkagefields.map((v) => { - v.linkageProperty = {}; - }), - ); - } - }); - } + const formGraph = form.getFormGraph(); + form.addEffects(id, () => { + return linkageRules.map((v, index) => { + return v.actions?.map((h) => { + if (h.targetFields) { + const fields = h.targetFields.join(','); + return onFieldReact(`*(${fields})`, (field: any, form) => { + linkagefields.push(field); + linkageMergeAction(h, field, v.condition, form?.values); + if (index === linkageRules.length - 1) { + setTimeout(() => + linkagefields.map((v) => { + v.linkageProperty = {}; + }), + ); + } + }); + } + }); }); }); - }); - return () => { - form.removeEffects(id); - }; + return () => { + form.removeEffects(id); + form.clearFormGraph(); + form.setFormGraph(formGraph); + }; + } }, [linkageRules]); return fieldSchema['x-decorator'] === 'Form' ? : ; };