最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于antd的autocomplete的二次封裝查詢示例

 更新時間:2023年08月24日 11:23:50   作者:點墨  
這篇文章主要為大家介紹了基于antd的autocomplete的二次封裝查詢示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

正文

基于antd的autocomplete進行二次封裝,用于后端實時查詢數(shù)據(jù)

autocomplete.js

import React, { useEffect, useState } from "react";
import { useDebounceFn } from "ahooks";
import { AutoComplete as AntdAutoComplete } from "antd";
import lodash from "lodash";
import protoTypes from "prop-types";
function EndAutoComplete(props) {
    const { value: propValue, onChange: propOnChange, defaultOptionsMap, fetchData, ...otherProps } = props;
    const [value, setValue] = useState(propValue);
    const [options, setOptions] = useState();
    const [optionsMap, setOptionsMap] = useState({});
    //初始化value
    useEffect(() => {
        if (defaultOptionsMap) {
            setValue(defaultOptionsMap[propValue]);
        }
    }, [defaultOptionsMap])
    //更新options map
    useEffect(() => {
        if (lodash.isArray(options)) {
            let newOptionMap = {};
            options.forEach(item => {
                const { value, label } = item;
                newOptionMap[label] = value;
            })
            setOptionsMap(newOptionMap);
        }
    }, [options])
    const _handleSearch = value => {
        const promise = fetchData(value);
        if (promise && promise.then) {
            promise.then(data => {
                setOptions(data);
            }).catch(e => {
                console.error("AutoComplete Fetch Data Error", e)
                setOptions([]);
            })
        }
    }
    const { run: handleSearch } = useDebounceFn(_handleSearch, { wait: 500 });//防抖
    const onSearch = value => {
        if (!value.trim()) {
            setOptions([]);
            return;
        }
        if (lodash.isFunction(fetchData)) {
            handleSearch(value);
        }
    }
    const onChange = (value) => {
        if (lodash.isFunction(propOnChange)) {
            propOnChange(optionsMap[value] || -999999);
        }
        setValue(value);
    }
    const onSelect = (value, option) => {
        if (lodash.isFunction(propOnChange)) {
            propOnChange(value);
        }
        setValue(option.label);
    }
    return (
        <AntdAutoComplete
            options={options}
            onSearch={onSearch}
            onSelect={onSelect}
            onChange={onChange}
            value={value}
            {...otherProps}
        >
        </AntdAutoComplete>
    )
}
EndAutoComplete.prototype = {
    fetchData: protoTypes.func,//異步獲取數(shù)據(jù)
    defaultOptionsMap: protoTypes.object,//用于鍵盤精靈初始化賦值
}
export default EndAutoComplete;

以上就是基于antd的autocomplete的二次封裝查詢鍵盤示例的詳細(xì)內(nèi)容,更多關(guān)于antd autocomplete的二次封裝的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Hello?React的組件化方式之React入門小案例演示

    Hello?React的組件化方式之React入門小案例演示

    這篇文章主要介紹了Hello?React的組件化方式-React入門小案例,本文通過Hello?React的案例,?來體驗一下React開發(fā)模式,?以及jsx的語法,需要的朋友可以參考下
    2022-10-10
  • 詳解React中的todo-list

    詳解React中的todo-list

    這篇文章主要介紹了React中的todo-list的相關(guān)知識,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-07-07
  • React實現(xiàn)錨點跳轉(zhuǎn)組件附帶吸頂效果的示例代碼

    React實現(xiàn)錨點跳轉(zhuǎn)組件附帶吸頂效果的示例代碼

    這篇文章主要為大家詳細(xì)介紹了React如何實現(xiàn)移動端錨點跳轉(zhuǎn)組件附帶吸頂效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2023-01-01
  • react?Scheduler?實現(xiàn)示例教程

    react?Scheduler?實現(xiàn)示例教程

    這篇文章主要為大家介紹了react?Scheduler?實現(xiàn)示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • React中使用react-player 播放視頻或直播的方法

    React中使用react-player 播放視頻或直播的方法

    這篇文章主要介紹了React中使用react-player 播放視頻或直播,本文教大家如何使用react框架及創(chuàng)建實例的代碼,本文內(nèi)容簡短給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • 創(chuàng)建React項目的三個方式小結(jié)

    創(chuàng)建React項目的三個方式小結(jié)

    本文主要介紹了創(chuàng)建React項目的三個方式小結(jié),包括create-react-app、Vite和Next.js,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-07-07
  • React前端DOM常見Hook封裝示例上

    React前端DOM常見Hook封裝示例上

    這篇文章主要為大家介紹了React前端DOM常見Hook封裝示例上篇,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • React替換傳統(tǒng)拷貝方法的Immutable使用

    React替換傳統(tǒng)拷貝方法的Immutable使用

    Immutable.js出自Facebook,是最流行的不可變數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)之一。它實現(xiàn)了完全的持久化數(shù)據(jù)結(jié)構(gòu),使用結(jié)構(gòu)共享。所有的更新操作都會返回新的值,但是在內(nèi)部結(jié)構(gòu)是共享的,來減少內(nèi)存占用
    2023-02-02
  • React Native中ScrollView組件輪播圖與ListView渲染列表組件用法實例分析

    React Native中ScrollView組件輪播圖與ListView渲染列表組件用法實例分析

    這篇文章主要介紹了React Native中ScrollView組件輪播圖與ListView渲染列表組件用法,結(jié)合實例形式詳細(xì)分析了ScrollView組件輪播圖與ListView渲染列表組件具體功能、使用方法與操作注意事項,需要的朋友可以參考下
    2020-01-01
  • React 的調(diào)和算法Diffing 算法策略詳解

    React 的調(diào)和算法Diffing 算法策略詳解

    React的調(diào)和算法,主要發(fā)生在render階段,調(diào)和算法并不是一個特定的算法函數(shù),而是指在調(diào)和過程中,為提高構(gòu)建workInProcess樹的性能,以及Dom樹更新的性能,而采用的一種策略,又稱diffing算法
    2021-12-12

最新評論

蚌埠市| 桐乡市| 大悟县| 渭源县| 嘉祥县| 大竹县| 泌阳县| 永康市| 凤台县| 沂水县| 舒城县| 银川市| 贺州市| 浦北县| 盘山县| 霍山县| 定结县| 平遥县| 南通市| 濉溪县| 文登市| 峨眉山市| 石狮市| 铜川市| 酉阳| 宜章县| 藁城市| 肇庆市| 荔浦县| 柞水县| 铜梁县| 芦山县| 吉安县| 长岭县| 谢通门县| 怀来县| 绿春县| 嘉鱼县| 孙吴县| 蒙自县| 临猗县|