React 关于Antd Select组件dropdownRender扩展菜单,点击事件没有响应
官方给出的示例是,在提供菜单的同时又补充了一个Add item。
页面效果无误,但是在添加点击事件时发现并不能触发点击事件
1 <Select 2 dropdownRender={menu => ( 3 <div> 4 {menu} 5 <Divider style={{ margin: '4px 0' }}/> 6 <div style={{ padding: '8px', cursor: 'pointer' }} onClick={()=>{console.log(206)}}> 7 <Icon type='plus' />添加单位 8 </div> 9 </div> 10 )} 11 > 12 {this.state.engineeringOwner.length>0?this.state.engineeringOwner.map(item => { 13 return (<Option value={item.Id}>{item.Name}</Option>) 14 }):null} 15 </Select>
最终在Issues中找到了答案,即:在select组件外部包一层div,将鼠标默认事件注释掉
1 <div onMouseDown={(e) => { 2 e.preventDefault(); 3 return false; 4 }}> 5 <Select 6 dropdownRender={menu => ( 7 <div> 8 {menu} 9 <Divider style={{ margin: '4px 0' }}/> 10 <div style={{ padding: '8px', cursor: 'pointer' }} onClick={()=>{console.log(206)}}> 11 <Icon type='plus' />添加单位 12 </div> 13 </div> 14 )} 15 > 16 {this.state.engineeringOwner.length>0?this.state.engineeringOwner.map(item => { 17 return (<Option value={item.Id}>{item.Name}</Option>) 18 }):null} 19 </Select> 20 </div>
如果你的select在表单中,你需要把div包在getFieldDecorator外面
1 <FormItem label='监理单位'> 2 <div onMouseDown={(e) => { 3 e.preventDefault(); 4 return false; 5 }}> 6 {getFieldDecorator('EngineeringSupervisor',{ 7 rules:[{required:true,message:'监理单位不能为空!'}] 8 })( 9 10 <Select 11 dropdownRender={menu => ( 12 <div> 13 {menu} 14 <Divider style={{ margin: '4px 0' }}/> 15 <div style={{ padding: '8px', cursor: 'pointer' }} onClick={()=>{this.setState({groupAddVisible:true})}}> 16 <Icon type='plus' />添加单位 17 </div> 18 </div> 19 )} 20 > 21 {this.state.engineeringSupervisor.length>0?this.state.engineeringSupervisor.map(item => { 22 return (<Option value={item.Id}>{item.Name}</Option>) 23 }):null} 24 </Select> 25 )} 26 </div> 27 </FormItem>