react 中 select 组件失焦后重置、需多次点击才能生效,通常是因为未正确绑定受控值(value 属性缺失),导致组件从受控模式退化为非受控模式。
在你提供的代码中,
✅ 正确做法:显式绑定 value 并确保初始值合法(避免 undefined 导致 placeholder 强制显示)
import { EnumDifficulty } from "@/components/Utils/EnumDifficulty";
import { useState } from "react";
const [difficulty, setDifficulty] = useState(undefined);
return (
Niveau
setDifficulty(e.target.value || undefined)}
>
{EnumDifficulty.map((diff) => (
))}
); ? 注意事项:
? 总结:React 表单元素的稳定性 = value + onChange 的完整闭环。漏掉 value,就等于放弃控制权——组件将自行管理内部状态,与 React 状态脱节,最终引发不可预测的行为。