import { Button, Select } from "antd"; import { api } from "@nice/client" import { useEffect, useState } from "react"; // 定义组件的 props 类型 interface TaxonomySelectProps { defaultValue?: string; value?: string; onChange?: (value: string) => void; width?: number | string; // 修改类型,支持百分比 placeholder?: string; extraOptions?: { value: string | undefined; label: string }[]; // 新增 extraOptions 属性 } export default function TaxonomySelect({ defaultValue, value, onChange, width = "100%", // 默认设置为 100% placeholder = "选择分类", extraOptions = [], // 默认值为空数组 }: TaxonomySelectProps) { const { data: taxonomies, isLoading: isTaxLoading } = api.taxonomy.getAll.useQuery({}); const [selectedValue, setSelectedValue] = useState( defaultValue ); // 当 defaultValue 或 value 改变时,将其设置为 selectedValue useEffect(() => { if (value !== undefined) { setSelectedValue(value); } else if (defaultValue !== undefined) { setSelectedValue(defaultValue); } }, [defaultValue, value]); // 内部处理选择变化,并调用外部传入的 onChange 回调(如果有的话) const handleChange = (newValue: string) => { setSelectedValue(newValue); if (onChange) { onChange(newValue); } }; return ( <>