reactjs - 默认值或值不适用于 FormItem ANTD
问题描述
我尝试使用以下代码,并且该字段永远不会绑定。onChange 属性运行良好
const { getFieldDecorator, getFieldError, isFieldTouched } = this.props.form;
const NameError = isFieldTouched("Name") && getFieldError("Name");
<FormItem validateStatus={NameError ? "error" : ""} help={NameError || ""}>
{getFieldDecorator("Name", {
//initialValue: this.state.Data.Name,
rules: [{ required: true, message: "Please input the component name!" }]
})(
<Input
className="form-control"
type="text"
name="Name"
defaultValue={this.state.Data.Name}
onChange={this.onChange}
/>
)}
</FormItem>
我错过了什么吗?我什至用input
而不是Input
编辑
在componentDidMount
方法上,我从 API 获取数据:
fetch('http://localhost:5728/Fields/get/' + this.state.Data.Id)
.then(results=>{
return results.json()
})
.then(data=>{
this.setState({
Data: {
Id: data.field.Id,
Name: data.field.Name,
Description: data.field.Description,
Value: data.field.Value
}
})
})
我尝试使用initialValue
,但它仅在constructor
方法上设置状态值时才有效。调用 API 时,不会反映更改。
解决方案
文档指出:
您不能通过 value defaultValue 属性设置表单控件的值,而应该在 getFieldDecorator 中使用 initialValue设置默认值。
您不应该手动调用 setState,请使用 this.props.form.setFieldsValue以编程方式更改值。
所以你只需要在setFieldsValue
从后端加载数据时调用:
fetch('http://localhost:5728/Fields/get/' + this.state.Data.Id)
.then(results=>{
return results.json()
})
.then(data=>{
this.props.form.setFieldsValue({
Id: data.field.Id,
Name: data.field.Name,
Description: data.field.Description,
Value: data.field.Value
})
})
或者更短,如果data.field
来自后端的字段名称完全匹配:
this.props.form.setFieldsValue(data.field)
推荐阅读
- java - 编写以反向列主要顺序返回二维数组的方法
- javascript - Webpack 构建生成带有空文件的代码
- firebase - react-native 的 Firebase 查询帮助
- scala - 双向运算符
- java - 根据波动数量的条件过滤列表
- apache-spark - 使用来自 Kafka 的数据时如何跳过多行记录中的标题?
- python - 如何从 sqlalchemy @validate 装饰器中捕获 Flask 中的异常
- angular - 从引导顶部角度材料完全迁移的最佳方法是什么
- php - 存储更改并稍后检索会话表单数据
- angular - 使用 Angular 指定 Google Places 自动完成的起始位置