calidation
calidation copied to clipboard
Validation errors are not updated after config and field change
Hi,
I have a dynamic content of my form, which is rendered based on type (it is provided from some drop down). Form inputs will change based on that type and so will do config.
What I observe after changing type to a different one, is that inside Validation component values:
- fields will change to the new once
- config will change to the new values
- errors will stay as they were before changing type
<ValidatorsProvider validators={allValidators}>
<Form onSubmit={onSubmit} id={'someId'} className={classes.content}>
<Validation config={selectConfigBasedOntype(type))}
initialValues={defaults}>
{generateDynamicFieldsBasedOnType}
</Validation>
</Form>
</ValidatorsProvider>
I just encountered the same issue, and managed to solve it by providing a different key to Validation. The issue is mainly that config is registered with Form on Validation.componentDidMount. By providing the different key, we're forcing react to unmount the current Validation, and mounting a new one
@meehaws You're correct, the config object is only utilized once at registration. But as @serenata-keith-mifsud suggested, a key to force a unregister/register to occur will reset those fields.
We could potentially add a feature to allow for the config prop to be updated and to handle this. However, it could potentially run into issue of wiping out form data unintentionally. If you want to create a PR, we'd be happy to review it. Just be sure to thoroughly test it.