我正在为我的向导使用 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
。您可以在此处找到沙盒