mirror of
https://github.com/nocobase/nocobase
synced 2024-11-15 08:26:21 +00:00
fix: linkage rule config closing rules require reopening the form to take effect (#1640)
This commit is contained in:
parent
7036879ea6
commit
ffcf1d9cf1
@ -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} />;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user