我使用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版。
答案 0 :(得分:0)
我找到了解决方案,我只需要在表单初始化中添加forceUnregisterOnUnmount: true
:
FormPropertyDetails = reduxForm({
form: 'registerAccommodationForm',
forceUnregisterOnUnmount: true,
destroyOnUnmount: false,
})(FormPropertyDetails);
以这种方式保留了向导的状态,但是在卸载字段时会清除字段值和syncErrors
。您可以找到沙箱here