我有一个Form类,其中包含一个错误对象和一个clearError方法,用于更新输入,以便一旦键入错误消息就会消失。 如果我只是删除一个属性,那么帮助文本不会在keydown上消失,那是什么不起作用。
剥离:
class Form {
clearError(field = null) {
if (!field) {
this.formErrors = {};
return;
}
delete this.formErrors[field];
}
hasError(field) {
return this.formErrors[field] !== undefined;
}
}
在我的输入帮助组件中,我有:
<span v-if="form.hasError(field)" v-text="form.getError(field)"></span>
我的主要形式是:
<form @keydown="form.clearError($event.target.name)">
...
<input-help :form="form" field="email"></input-help>
如果我清除所有(form.clearError()
)中的formErrors,则v-if正常工作,但如果我只清除formErrors(form.clearError('email')
)上的一个属性则不行。我假设我遇到了某种缓存。
我已经记录了$event.target.name
,它运行正常,我可以在Vue dev工具中看到formErrors.email
属性被删除,但帮助文本仍然保留为v- if(在input-help中)没有正确计算值的变化。
知道如何正确地进行v-if更新吗?我不想清除所有错误,我只想清除与修改后的输入相关的错误。
答案 0 :(得分:1)
您需要告诉Vue您正在尝试删除Vue不知道的属性。而不是
Emp = connect(mapStateToProps)(Emp);
export default reduxForm({
form: 'empForm', // a unique identifier for this form
onSubmit: submit,
})(Emp);
使用
delete this.formErrors[field];