UNREGISTER_FIELD 不更新syncErrors
·
问题:UNREGISTER_FIELD 不更新syncErrors
我正在为我的向导使用 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在卸载字段时被清除。你可以在这里找到一个沙箱
更多推荐
所有评论(0)