目录

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

目录

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的结构是:

https://i-blog.csdnimg.cn/blog_migrate/5b2b74fd61aed00612d1e5aba5eaccdc.png

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

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

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