这里要注意 React 的受控组件概念。表单组件默认为非受控组件,如果要用 state 存储并控制其值,则需要将表单的 value 赋值为 state,令 state 强制改变表单的值,令其受控
注意,使用受控组件时,要将 value 和其值的改变时间配合在一起使用
const useTaskTargetlector = () => {
**const [selectedTarget, setSelectedTarget] = useState<string>('全部'); // state**
const targets = ['全部', '班主任', '学生'];
const TaskTargetSelector = () => (
**<Select value={selectedTarget} onValueChange={(e) => setSelectedTarget(e)}> // 令其受控**
<SelectTrigger className="w-[100px]">
<SelectValue placeholder="请选择" />
</SelectTrigger>
<SelectContent>
{
targets.map((item, index) => {
return (
<SelectItem
key={index}
value={item}
>
{item}
</SelectItem>
)
})
}
</SelectContent>
</Select>
)
return { TaskTargetSelector, selectedTarget }
};