【发布时间】:2019-02-12 04:11:45
【问题描述】:
我试图通过添加className 在表单字段中显示错误。
这是渲染函数:
render() {
return (
<div className="row row--no-margin">
<button onClick={this.validate}>Test validation</button>
{
this.props.model.map( (field, index) => {
return this.renderTextField(field);
});
}
</div>
);
}
这是renderTextField 函数:
renderTextField(field, index) {
let inputClassNames = 'form-control';
if (this.state.errors.indexOf(field.name) !== -1) {
inputClassNames += ' error-required';
}
return (
<div className={field.wrapperClassName} key={field.key}>
<label className="field-label">{field.label}</label>
<input
type="text"
name={field.name}
ref={field.name}
className={inputClassNames}
onChange={this.handleChange}
value={this.state[field.name]}
/>
</div>
);
}
当我点击按钮测试验证时,“error-required”类被添加到输入中,但只要我输入任何内容,它就会丢失类。
这是onChange 函数:
handleChange(event) {
this.setState({
[event.target.name] : event.target.value
});
}
字段从对象中获取数据:
{ 键:'名称', 名称:'名称', 类型:'文本', 标签:'全名', wrapperClassName: 'col-md-6', },
我错过了什么吗?
编辑:
validate函数:
validate() {
let errors = [];
this.props.model.map((m, index) => {
if(!this.state[m.name]){
errors.push(m.name);
}
});
this.setState({
errors: errors
})
}
【问题讨论】:
-
可以添加
validate()的代码吗? -
我用
validate()编辑了这个问题,谢谢。 -
在您的
renderTextField函数中,尝试将onChange={this.handleChange}更改为onChange={()=>this.handleChange}。
标签: reactjs