【发布时间】:2018-07-19 13:19:02
【问题描述】:
我很难适应 antd 的形式。 我在这个表单中有这个选择字段,我想从中获取值 onChange 但不知何故不能让它正常工作。
说这是我想要值的项目
<FormItem
{...formItemLayout}
label={fieldLabels.qcategoryid}
validateStatus={categoryError ? "error" : ""}
help={categoryError || ""}
>
{getFieldDecorator("qcategoryid", {
rules: [{ required: true, message: "Please select Category!" }],
onChange: this.handleCategoryChange
})(<Select>{categoryOptions}</Select>)}
</FormItem>
这是类别选项
if (this.props.categories) {
categoryOptions = this.props.categories.map(item => (
<Select.Option
key={item.categoryid}
value={item.categoryid}
name={item.categoryname}
>
{item.categoryname}
</Select.Option>
));
}
我想要类别名称和 ID 所以我创建了一个名为 onChange 的 handleCategoryChange 并且我能够得到我想要的字段。
但是,现在看来,我必须在该字段上单击两次才能正确选择它。 如果我只单击它一次,它就会显示在控制台中。但表单上的字段仍然为空。当我再次单击它时,该字段也会显示在表单中。
那么,我在这里做错了什么。 是啊!这是handleCategoryChange函数
handleCategoryChange = (value, e) => {
console.log("value is : ", value);
console.log("e : ", e);
this.props.form.setFieldsValue({ qcategoryid: value });
this.setState({
categorySelected: value,
categoryname: e.props.name
});
};
只是为了让自己清楚。 在单击提交之前,我需要这些值。 未提交。
【问题讨论】:
-
你在哪里使用createform函数?
-
在组件外部使用它。像这样@Form.create()
-
嗯,我正在查看 redux 方式,您使用 onFieldsChange 而不是 onChange 属性。但由于您需要访问“this”,它可能不适用于您的情况
-
你试过去掉这行吗:this.props.form.setFieldsValue({ qcategoryid: value }); ?
-
是的。那也没用
标签: javascript reactjs forms antd