本文出自:
说白了就是你给了From他识别不了的数据类型,或者说,你更改了你传给他的数据类型。
render() {
const mapPropsToFields = () => {
let goods_img = [{
url: this.state.course.goods_img,
uid: -1,
name: this.state.course.goods_img
}];
return {
goods_img: {value: goods_img},
};
};
const onValuesChange = (props, values) => {
if (values.hasOwnProperty('goods_img')) {
values = {
goods_img: values.goods_img[0].url,
}
}
this.state.course = Object.assign(this.state.course, values);
};
let AddForm = createForm({mapPropsToFields, onValuesChange})(AddCourseForm);
return (
<div>
<Modal title={title}
xxx
>
<div className="bd">
<AddForm
{...this.state}
xxx
/>
</div>
</Modal>
</div>
);
}
- 以上面为例,mapPropsToFields内把goods_img给做了转化,因为后台给的是url,前台Upload需要的是array类型。
- onValuesChange在表单发生变化时回调,此时我没有写里面的那个if
- 所以goods_img就存进去了一个antd返回的array类型(里面啥都有)
- 此时我setState(),重新渲染时,goods_img的数据类型就还是从mapPropsToFields这边进行了转化。但是已经取不出来数据了,因为数据类型变了
说得比较乱,理解流程即可
https://ant.design/components/upload-cn/
https://ant.design/components/form-cn/