antd的Select组件的多选模式限制多选数量

项目场景:使用的antd的Select组件的多选模式限制多选数量

问题描述

提示:限制多选的数量:

例如:在使用antd的Select组件的时候,官方并没有提供多选的数量限制,而且这种的情况也比较常见,姑且在antd的Select上面进行了二次封装,具体代码如下:

import { useState } from 'react';
import { Select as AntdSelect } from 'antd';

export default function Select(props) {
  const { maxLength, value, onChange, mode, ...otherProps } = props;
  
  const [initValue, setInitValue] = useState<string[] | string | undefined>(value);
  
  return (
    <AntdSelect
      onChange={(selectValue) => {
        // 模式为多选且存在最大值时,当最大长度大于输入长度时触发校验
        if (mode === 'multiple' && maxLength && selectValue?.length > maxLength) {
          selectValue?.pop(); // 删除多余项
          setInitValue(selectValue);
        }
        
        onChange(selectValue);
      }}
      value={initValue}
      mode={mode}
      {...otherProps}
    />
  )
}

// 使用示例,这里建议使用options属性渲染
<Select options={yourOptions} maxLength={3} mode='multiple'/>

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值