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/

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