import { CloseOutlined } from '@ant-design/icons'; import { Button, Col, Row, Space } from 'antd'; import { useMemo, useState } from 'react'; import { FormattedMessage, useIntl } from 'umi'; import UserSelect from '.'; import { formatUserRender } from '../utils'; export interface UserSelectListProps { state?: 0 | 1; value?: any[]; width?: number | string; onChange?: (v?: any[]) => void; } const UserSelectList = (props: UserSelectListProps) => { const { state, value: parentVal, width = '100%', onChange: parentChange } = props; const { formatMessage } = useIntl(); const [selfValue, setSelfValue] = useState(parentVal ?? []); // 受控判断 const yxVal = parentVal === undefined ? selfValue : parentVal; const value = useMemo(() => { if (yxVal) { return Array.isArray(yxVal) ? yxVal : [yxVal]; } return []; }, [yxVal]); const onChange = (v: any[]) => { parentChange?.(v); setSelfValue(v); }; const onDel = (id: number) => { const newUsers = value.filter((item) => item.id !== id); onChange(newUsers); }; const [userSelect, setUserSelect] = useState([]); return (
{value.map((item) => ( {formatUserRender(item)} onDel(item.id)} /> ))} {value.length === 0 && (
)}
); }; export default UserSelectList;