UNREGISTER_FIELD 不会更新同步错误



我正在为我的向导使用 redux-form,我有一些字段可以根据其他一些字段值显示/隐藏。当它们被渲染时,它们是必需的,但当然,如果它们是隐藏的验证,则应避免。 我注意到,在首次显示(和必需(然后隐藏的情况下,UNREGISTER_FIELD被调用但syncErrors未更新,并且仍然包含刚刚取消注册的字段无效;这是行动

{
type: '@@redux-form/UNREGISTER_FIELD',
meta: {
form: 'registerAccommodationForm'
},
payload: {
name: 'property.breakfastPrice',
destroyOnUnmount: false
}
}

这就是这个状态(没有改变(:

form: {
registerAccommodationForm: {
syncErrors: {
property: {
breakfastPrice: 'Required'
}
},

我的表单是这样初始化的:

FormPropertyDetails = reduxForm({
form: 'registerAccommodationForm',
destroyOnUnmount: false,
})(FormPropertyDetails);

这是正常行为吗?字段注销时不应更新验证吗?当显示/隐藏动态字段时,如何触发syncErrors更新? 我使用的是 6.7.0 版。

我找到了解决方案,我只需要在表单初始化中添加forceUnregisterOnUnmount: true

FormPropertyDetails = reduxForm({
form: 'registerAccommodationForm',
forceUnregisterOnUnmount: true,
destroyOnUnmount: false,
})(FormPropertyDetails);

这样,我的向导的状态将保留,但在卸载字段时会清除字段值和syncErrors。您可以在此处找到沙盒

最新更新