基于antd的autocomplete的二次封装查询示例
更新时间:2023年08月24日 11:23:50 作者:点墨
这篇文章主要为大家介绍了基于antd的autocomplete的二次封装查询示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
正文
基于antd的autocomplete进行二次封装,用于后端实时查询数据
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,//异步获取数据 defaultOptionsMap: protoTypes.object,//用于键盘精灵初始化赋值 } export default EndAutoComplete;
以上就是基于antd的autocomplete的二次封装查询键盘示例的详细内容,更多关于antd autocomplete的二次封装的资料请关注脚本之家其它相关文章!
相关文章
D3.js(v3)+react 实现带坐标与比例尺的散点图 (V3版本)
散点图(Scatter Chart),通常是一横一竖两个坐标轴,数据是一组二维坐标,分别对应两个坐标轴,与坐标轴对应的地方打上点。由此可以猜到,需要的元素包括circle(圆)和axis(坐标轴),接下来通过本文大家分享D3.js(v3)+react 实现带坐标与比例尺的散点图 (V3版本) ,一起看看2019-05-05用React实现一个类 chatGPT 的交互式问答组件的方法详解
这篇文章主要给大家详细介绍如何用React实现一个类 chatGPT 的交互式问答组件的方法,文中有详细的代码示例,对我们学习有一定的帮助,需要的朋友可以参考下2023-06-06一文搞懂 React 18 中的 useTransition() 与 useDeferredValue()
这篇文章主要介绍了一文搞懂 React 18 中的 useTransition()与useDeferredValue(),文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下2022-09-09
最新评论