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' ? : ;
};