zy-react-library/components/Select/Basic/index.js

64 lines
1.4 KiB
JavaScript

import { Select } from "antd";
import { useEffect } from "react";
import { getLabelName } from "../../../utils";
/**
* 基础下拉组件(不建议直接使用此组件,二次继承使用)
*/
function BasicSelect(props) {
const {
onGetData,
onChange,
onGetLabel,
placeholder = "",
data = [],
nameKey = "name",
idKey = "id",
...restProps
} = props;
const handleChange = (event, option) => {
if (Array.isArray(event)) {
if (event.length > 0) {
const name = [];
event.forEach((item) => {
name.push(getLabelName({ list: data, status: item, idKey, nameKey }));
});
onGetLabel?.(name);
}
else {
onGetLabel?.([]);
}
}
else {
if (event)
onGetLabel?.(getLabelName({ list: data, status: event, idKey, nameKey }));
else
onGetLabel?.("");
}
onChange?.(event, option);
};
useEffect(() => {
onGetData?.(data);
}, [data]);
return (
<Select placeholder={`请选择${placeholder}`} showSearch allowClear onChange={handleChange} {...restProps}>
{data.map((item) => {
const value = item[idKey];
const label = item[nameKey];
return (
<Select.Option key={value} value={value}>
{label}
</Select.Option>
);
})}
</Select>
);
}
BasicSelect.displayName = "BasicSelect";
export default BasicSelect;