让前端飞Web前端之路前端开发

【React】利用antd的form自定义表单控件

2019-06-03  本文已影响3人  废柴码农

由于业务的需求,需要对Form表单进行自定义控件操作
业务需求如下:


屏幕快照 2019-06-03 下午5.10.58.png

首先点击选择按钮---在弹窗中选择产品--将选择好的产品展示在页面上,关于自定义组件的封装网上大牛的方法大多是封装好新的组件,从而能够在点击保存的时候获取到自定义的value,

但是今天给大家提供另一种思路:只是将组件放在getFieldDecorator中,点击保存的时候通过this.props.form.validateFields方法中的values加入要传给后台的新的参数

具体实现代码如下:

//展示产品的list放在选择产品下面
    showProductList =()=> {
        let ProductList = this.state.ProductList
        return ProductList && ProductList.map((item,index) => {
            return <div key={index}>{item.name}</div>
        })
    }
  const SELECTBTN = <FormItem label={label} {...formItemLayout} key={field}>
                    {
                       getFieldDecorator(field, {
                           rules:[{
                               initialValue: initialValue,
                               required:required,
                               message: requiredMsg,
                           }]
                       })(
                        <div>
                            <Button type="primary" onClick = {this.chooseProduct}>选择</Button>
                            {this.showProductList()}  
                            {/* 展示产品list */}
                        </div>
                           )
                   }
                    </FormItem>
点击保存得时候,在values中定义好要传给后台的参数,如:我需要传给后台需要的ids
 handleFormSubmit = (e) => {
        e.preventDefault();
        this.props.form.validateFields((err, values) => {
            values.ids = [1,2,3] //这步骤是定义的,根据你的需求来修改参数值
            console.log('Received values of form: ', values); //这样打印出来的value中就有ids了
        });
       //this.requestLIst()然后这块可以请求接口把参数传过去了
    }

这样就能实现了哇~

上一篇下一篇

猜你喜欢

热点阅读