react通过下拉框选择多个,并展示在下方的方式

以备后用,直接上代码:

一、方法:

复制代码
//查询学校一级部门列表
    async orgFirstLevelList() {
        let data = {
            schoolId:this.state.schoolId
        };
        let depList = await orgFirstLevelList(data);
        this.setState({
            depList: depList
        })
    }
    //删除所选部门
    deleteDep(index) {
        let {selectDepList} = this.state;
        selectDepList.splice(index,1);
        this.setState({ selectDepList });
    }
    //添加所选部门
    addDep(e) {
        let orgName = null;
        let { depList,selectDepList} = this.state;
        //判断已添加列表中是否已存在
        for(let i = 0;i < selectDepList.length; ++i){
            if(selectDepList[i].id === e[0]) {
                this.mesWarning('该部门已添加过了,无需重复添加')
                return;
            }
        }
        for(let i = 0;i < depList.length; ++i){
            if(depList[i].id === e[0]) {
                orgName = depList[i].orgName;
                break;
            }
        }
        selectDepList.push({id:e[0], orgName:orgName});
        this.setState({ selectDepList: selectDepList});
        this.props.form.setFieldsValue({orgId:""})
    }

二、form及选择展示

复制代码
<Form.Item label="所属部门">
{
     getFieldDecorator('depId', {
         rules: [
             {
              required: true,
              message: '请输入所属组织',
             },]
     })(
         <Cascader
         fieldNames={{label: 'orgName', value: 'id'}}
         options={depList}
         placeholder="请选择所属组织,支持多选"
         changeOnSelect
         onChange={(e) => this.addDep(e)}
         disabled={this.state.isLook}
         getPopupContainer={triggerNode => triggerNode.parentNode || document.body}
         />)}
</Form.Item>
  {selectDepList.length > 0?
    <Col span={24}>
    <div className="diyTag">
    {
      selectDepList.map((item,index)=>{
        return(
         <Tag key={index} id={item.id}>
         {item.orgName}
         <span onClick={() => this.deleteDep(index)}>
            {closeBtn}
         </span>
       </Tag>)
      })
    }
    </div>
    </Col>:""
}
相关推荐
陈天伟教授13 小时前
人工智能训练师认证教程(2)Python os入门教程
前端·数据库·python
信看14 小时前
NMEA-GNSS-RTK 定位html小工具
前端·javascript·html
Tony Bai14 小时前
【API 设计之道】04 字段掩码模式:让前端决定后端返回什么
前端
爱吃大芒果14 小时前
Flutter 主题与深色模式:全局样式统一与动态切换
开发语言·javascript·flutter·ecmascript·gitcode
苏打水com14 小时前
第十四篇:Day40-42 前端架构设计入门——从“功能实现”到“架构思维”(对标职场“大型项目架构”需求)
前端·架构
king王一帅15 小时前
流式渲染 Incremark、ant-design-x markdown、streammarkdown-vue 全流程方案对比
前端·javascript·人工智能
苏打水com15 小时前
第十八篇:Day52-54 前端跨端开发进阶——从“多端适配”到“跨端统一”(对标职场“全栈化”需求)
前端
Bigger15 小时前
后端拒写接口?前端硬核自救:纯前端实现静态资源下载全链路解析
前端·浏览器·vite
BD_Marathon15 小时前
【JavaWeb】路径问题_前端绝对路径问题
前端