Skip to content

Commit fb56c1e

Browse files
authored
Merge 1edb545 into d789287
2 parents d789287 + 1edb545 commit fb56c1e

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

src/Field.tsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,14 @@ class Field extends React.Component<InternalFieldProps, FieldState> implements F
312312
this.reRender();
313313
return;
314314
}
315+
316+
// check dependencies when related fields changed
317+
const hasDep =
318+
namePathList &&
319+
namePathList.some(p => containsNamePath(dependencies.map(getNamePath), p));
320+
if (hasDep) {
321+
this.reRender();
322+
}
315323
break;
316324
}
317325

tests/index.test.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -880,4 +880,29 @@ describe('Form.Basic', () => {
880880
'match',
881881
]);
882882
});
883+
884+
it('setFieldValue should check dependencies', () => {
885+
const formRef = React.createRef();
886+
let rendered = false;
887+
const Demo = () => (
888+
<Form ref={formRef}>
889+
<Field name={['user', 'target']}>
890+
<Input />
891+
</Field>
892+
<Field dependencies={[['user', 'target']]}>
893+
{(_, __, { getFieldsValue }) => {
894+
rendered = true;
895+
return <pre>{JSON.stringify(getFieldsValue(), null, 2)}</pre>;
896+
}}
897+
</Field>
898+
</Form>
899+
);
900+
901+
const wrapper = mount(<Demo />);
902+
// Set
903+
rendered = false;
904+
formRef.current.setFieldValue(['user', 'target'], 'setFieldValue');
905+
wrapper.update();
906+
expect(rendered).toBeTruthy();
907+
});
883908
});

0 commit comments

Comments
 (0)