fix: linkage rule config closing rules require reopening the form to take effect (#1640)

This commit is contained in:
katherinehhh 2023-04-03 10:22:50 +08:00 committed by GitHub
parent 7036879ea6
commit ffcf1d9cf1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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' ? <FormDecorator {...props} /> : <FormComponent {...props} />;
};