基于antd select使用 open 对下拉菜单进行自由扩展,新增唯一性判断

5 篇文章 0 订阅
import { Button, Input, Drawer, Space, Form } from 'antd';
import { useState, useRef, useEffect } from 'react';
import type { InputRef } from 'antd';
import { PlusOutlined } from '@ant-design/icons';

  const inputRef = useRef<InputRef>(null);
  const [items, setItems] = useState([]);
  const [name, setName] = useState('');
  const [name, setName] = useState(["test","poc"]);
  
  const onNameChange = (event: React.ChangeEvent<HTMLInputElement>) => {
    setName(event.target.value);
  };
  
//下拉选择判断唯一性 list是已经存在的,用来判断唯一性的数组 
const addItem = (e: React.MouseEvent<HTMLAnchorElement>) => {
    e.preventDefault();
    if (!name) {
      notification['warning']({
        message: '请输入环境类型',
      });
      return;
    } else {
      if (name && list.includes(name)) {
        notification['warning']({
          message: '环境类型已存在,不可以重复添加',
        });

        return;
      } else {
        setItems([...items, name]);
        setName('');
        setTimeout(() => {
          inputRef.current?.focus();
        }, 0);
      }
    }
  };
 return (
		<Select
            placeholder="请选择环境类型"
            dropdownRender={(menu) => (
              <>
                {menu}
                <Divider style={{ margin: '8px 0' }} />
                <Space style={{ padding: '0 8px 4px' }}>
                  <Input
                    placeholder="请选择环境类型"
                    ref={inputRef}
                    value={name}
                    onChange={onNameChange}
                  />
                  <Button icon={<PlusOutlined />} onClick={addItem}>
                    新增
                  </Button>
                </Space>
              </>
            )}
            options={items.map((item) => ({
              label: item,
              value: item,
              disabled: list.includes(item),
            }))}
          />
        )
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值