antd select组件相关——多选下拉框的前后端传值问题

有下面一个select,模式是多选,要求给后端传所有选中项,格式为“1,2,,… ,n”

<Select
       mode="multiple"//多选
       value={this.state.category}
       showSearch={false}
       showArrow={true}
       defaultValue=""
       onChange={this.handleCategoryChange}>
        {this.categoryOptions.map((item: any) => {
                                return (
                                    <Select.Option value={item.name} key={item.category}>
                                        {item.name}
                                    </Select.Option>
                                );
                            })}
</Select>
handleCategoryChange = (name: any, category: any) => {
        this.setState({
            category: name,
            category_key: category.map((v: any) => v.key).join(",") || ""
        });
    };

要传给后端的是 this.state.category_key
后端要求的格式是“1,2,… ,n”
当选择一项或多项,触发onChange事件时,可以打印看到category的结构是:
在这里插入图片描述

因此只需要取每一项的key值,组成一个“key1,key2,… ,key3”的形式。

category.map((v: any) => v.key)//取每一项的key,结果:["key1","key2", ... ,"key3"]
Array.join(",") //将数组拆分为字符串 

以上,传值问题解决。有个待解决的小问题,多选模式下,antd的select 默认下拉箭头不显示。可以手动设置 showArrow={true} 即可显示。但每次点击展开下拉框,下拉箭头就变成搜索图标了。如有答案可以告诉我~🎈✨

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值