本文出自:
說白了就是你給了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/