antd 封装select输入后自动搜索 显示option 组件
框架自带的 自动搜索 有BUG 用 select 组件 封装
子组件
import _ from lodash
import {
Select, Empty } from antd;
import React, {
useState, useEffect } from react;
import {
PeopleDropList } from @/services/admin;
const SelectRemoteSearch = (props) => {
const {
onSelect, requestData = {
}, placeholder } = props
const {
Option } = Select;
const [peopleDropList, setPeopleDropList] = useState([]);
const fetch = (value) => {
PeopleDropList({
QueryClause: value,
...requestData,
}).then(res => {
if (res) {
if (res.ReturnCode == 1001) {
let list = [];
!!res.PeopleDropList && res.PeopleDropList.map(item => {
list.push({
Label: `${
item.PersonName} ${
item.Label ? ( + item.Label + ) : }`,
Value: item.Value,
StaffCode: item.StaffCode,
Id: `${
item.PersonName} ${
item.Label ? ( + item.Label + ) : }`,
Function: item.Function,
Email: item.Label,
Name: item.PersonName,
Level: item.Level,
});
});
setPeopleDropList(list);
};
};
})
};
const handleChange = (value, option) => {
onSelect && onSelect(value, option);
};
const handleSearch = (value) => {
searchDebounce(value);
};
const searchDebounce = _.debounce(fetch, 500); // 防抖
return (
<Select
showSearch
allowClear
showArrow={
true}
filterOption={
false}
onChange={
handleChange}
onSearch={
handleSearch}
style={
{
width: 100% }}
placeholder={
placeholder}
defaultActiveFirstOption={
false}
notFoundContent={
null}
>
{
!!peopleDropList && peopleDropList.map(item => {
return <Option value={
item.Value} key={
item.Value} optiondata={
item}>{
item.Label}</Option>;
})}
</Select>
);
};
export default SelectRemoteSearch;
父组件
import SelectRemoteSearch from @/components/SelectRemoteSearch;
const onSelect = (value, option) => {
if (!!option) {
let data = option.optiondata;
form.setFieldsValue({
StudentName: data.Name,
Email: data.Email,
Function: data.Function,
Level: data.Level,
});
setStaffCode(data.StaffCode);
} else {
form.setFieldsValue({
StudentName: ,
Email: ,
Function: ,
Level: ,
});
setStaffCode();
};
};
<Form.Item
label="Name"
name=StudentName
rules={
[{
required: true, message: Please Select Name }]}
>
<SelectRemoteSearch
placeholder={
Name}
onSelect={
onSelect}
/>
</Form.Item>
···
上一篇:
IDEA上Java项目控制台中文乱码
