React Antd Select组件 自定义下拉内容(dropdownRender扩展菜单) 点击事件没有响应

React Antd Select组件 自定义下拉内容(dropdownRender扩展菜单) 点击事件没有响应

转载源地址

官方给出的示例是,在提供菜单的同时又补充了一个Add item。

在这里插入图片描述

页面效果无误,但是在添加点击事件时发现并不能触发点击事件

<Select
    dropdownRender={menu => (
        <div>
            {menu}
            <Divider style={{ margin: '4px 0' }}/>
            <div style={{ padding: '8px', cursor: 'pointer' }} onClick={()=>{console.log(206)}}>
                <Icon type='plus' />添加单位
            </div>
        </div>
    )}
>
    {this.state.engineeringOwner.length>0?this.state.engineeringOwner.map(item => {
        return (<Option value={item.Id}>{item.Name}</Option>)
    }):null}
</Select>

最终在Issues中找到了答案,即:在select组件外部包一层div,将鼠标默认事件注释掉

<div onMouseDown={(e) => {
    e.preventDefault();
    return false;
}}>
    <Select
        dropdownRender={menu => (
            <div>
                {menu}
                <Divider style={{ margin: '4px 0' }}/>
                <div style={{ padding: '8px', cursor: 'pointer' }} onClick={()=>{console.log(206)}}>
                    <Icon type='plus' />添加单位
                </div>
            </div>
        )}
    >
        {this.state.engineeringOwner.length>0?this.state.engineeringOwner.map(item => {
            return (<Option value={item.Id}>{item.Name}</Option>)
        }):null}
    </Select>
</div>

如果你的select在表单中,你需要把div包在getFieldDecorator外面

<FormItem label='监理单位'>
    <div onMouseDown={(e) => {
        e.preventDefault();
        return false;
    }}>
        {getFieldDecorator('EngineeringSupervisor',{
            rules:[{required:true,message:'监理单位不能为空!'}]
        })(

            <Select
            dropdownRender={menu => (
                <div>
                    {menu}
                    <Divider style={{ margin: '4px 0' }}/>
                    <div style={{ padding: '8px', cursor: 'pointer' }} onClick={()=>{this.setState({groupAddVisible:true})}}>
                        <Icon type='plus' />添加单位
                    </div>
                </div>
            )}
        >
            {this.state.engineeringSupervisor.length>0?this.state.engineeringSupervisor.map(item => {
                return (<Option value={item.Id}>{item.Name}</Option>)
            }):null}
        </Select>
        )}
    </div>
</FormItem>
        }):null}
    </Select>
    )}
</div>
```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值