react ant design中下拉表单实现双向联动

 

上面是数据结构以及效果图

 

下面是实现代码:

1.react的写法

<Col span={5} style={{ padding: '0 5px' }}>
                                    <FormItem>
                                        {getFieldDecorator('brandValue')(
                                            <Select
                                                allowClear
                                                showSearch
                                                style={{ width: '100%' }}
                                                placeholder="品牌"
                                                optionFilterProp="children"
                                                onChange={this.brandChange}
                                                filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
                                            >
                                                {brandList && brandList.map((item, index) =>
                                                    <Option key={`${index}ss`} value={`${item.brand}`}>{item.brand}</Option>
                                                )}
                                            </Select>
                                        )}
                                    </FormItem>
 </Col>
<Col span={6} style={{ padding: '0 5px' }}>
                                    <FormItem>
                                        {getFieldDecorator('car_type', { onChange: this.handleCarTypeChange })(
                                            <Select
                                                allowClear
                                                showSearch
                                                style={{ width: '100%' }}
                                                placeholder="车型"
                                                optionFilterProp="children"
                                                filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
                                            >
                                                {car_typeList && _.uniq(car_typeList.map(item => item.car_type)).map((item, index) =>
                                                    <Option key={`${index}s`} value={`${item}`}>{item}</Option>
                                                )}
                                            </Select>
                                        )}
                                    </FormItem>
 </Col>

  2.js操作

if (getFieldValue("car_type")) {
            console.log(car_typeList,'car_typeList');
            const names = car_typeList.filter(item => item.car_type == getFieldValue("car_type")).map(item => item.brandname)
            brandList = brandList.filter(item => names.indexOf(item.brand) != -1);
            console.log(brandList,'brandList');
        }
if (getFieldValue("brandValue")) {
            car_typeList = car_typeList.filter(item => item.brandname == getFieldValue("brandValue"))
        }

  3.接口数据

  const { projectDrop = {} } = this.props;
  let car_typeList = projectDrop.car_typeList || [];//car_type
        let brandList = projectDrop.brandList || [];//brand

  

 

posted @ 2018-06-05 15:58  一只爱study的girl  阅读(6611)  评论(0编辑  收藏  举报