HOW - Antd 组件库支持防抖和远程加载的人员搜索组件

特性

  1. 支持 focus 时即发起请求获取用户列表
  2. 输入时 debounce 防抖
  3. 选中后以 tag 形式展示选项,这次点击 x 删除
  4. 搜索结果中若包含已选项会高亮
  5. 支持设置指定选项 disabled

一、具体代码

Antd - Select -搜索用户 demo 中给出了具体代码:

import React, {
   
    useMemo, useRef, useState } from 'react';
import {
   
    Select, Spin } from 'antd';
import type {
   
    SelectProps } from 'antd';
import debounce from 'lodash/debounce';

export interface DebounceSelectProps<ValueType = any>
  extends Omit<SelectProps<ValueType | ValueType[]>, 'options' | 'children'> {
   
   
  fetchOptions: (search: string) => Promise<ValueType[]>;
  debounceTimeout?: number;
}

function DebounceSelect<
  ValueType extends {
     
      key?: string; label: React.ReactNode; value: string | number } = any,
>({
   
    fetchOptions, debounceTimeout = 800, ...props }: DebounceSelectProps<ValueType>) {
   
   
  const [fetching, setFetching] = useState(false);
  const [options, setOptions] = useState<ValueType[]>([]);
  const fetchRef = useRef(0);

  const debounceFetcher = useMemo(() => {
   
   
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@PHARAOH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值