ant design (antd) Form.Item Objects are not valid as a React child

本文出自:

http://blog.csdn.net/wyk304443164

說白了就是你給了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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章