React Bootstrap Select,第一个 Select 选项未由 onChange 事件触发
React Boostrap Select, First Select Option ins not triggered by onChange event
我正在使用 React Boostrap Select 组件:
<Form.Group className="mb-1">
<Form.Label
htmlFor="type"
className="iig-form-label d-inline-block text-truncate"
>
Type de projet
{loadingTypes && <Spinner animation="grow" size="sm" />}
</Form.Label>
<Form.Select
required
aria-label="Default select example"
id="type"
name="type"
onChange={(e) => handleChange(e)}
isInvalid={false}
>
// THIS IS THE DEFAULT OPTION THAT IS NOT TRIGGERED <-------------------
<option
value={currentType ? currentType["@id"] : ""}
data-category={
currentType ? currentType?.category?.label : ""
}
>
{currentType
? currentType.label
: `Choisir parmi la
liste des types de projets`}
</option>
{filteredTypes.map((filteredTypes, key) => {
return (
<option
value={`/api/types/${filteredTypes.id}`}
data-category={filteredTypes.category.label}
key={key}
>
{filteredTypes.label}
</option>
);
})}
我添加了一个默认选项来显示。
当我点击默认选项时,onChange
事件没有被触发。
我该如何解决?
我无法按照您的示例进行操作,因此我创建了一个最小示例来向您展示它是如何工作的:
- 创建状态来存储值,并将select编辑选项的id/value作为默认值
- 编写 onChange 处理程序
- 将状态值和 onChange 处理程序传递给Form.Select
- 在 Form.Select 中遍历你的 select 选项列表
.
const selectOptions = [
{ value: "js", label: "Javascript" },
{ value: "ja", label: "Java" },
{ value: "py", label: "Python" },
{ value: "go", label: "Go" },
{ value: "cs", label: "C#" }
];
export default function App() {
const [value, selectValue] = useState("js");
const handleChange = (event) => selectValue(event.target.value);
return (
<Form.Group className="mb-1">
<Form.Select value={value} onChange={handleChange}>
{selectOptions.map((option) => {
return <option value={option.value}>{option.label}</option>;
})}
</Form.Select>
</Form.Group>
);
}
我正在使用 React Boostrap Select 组件:
<Form.Group className="mb-1">
<Form.Label
htmlFor="type"
className="iig-form-label d-inline-block text-truncate"
>
Type de projet
{loadingTypes && <Spinner animation="grow" size="sm" />}
</Form.Label>
<Form.Select
required
aria-label="Default select example"
id="type"
name="type"
onChange={(e) => handleChange(e)}
isInvalid={false}
>
// THIS IS THE DEFAULT OPTION THAT IS NOT TRIGGERED <-------------------
<option
value={currentType ? currentType["@id"] : ""}
data-category={
currentType ? currentType?.category?.label : ""
}
>
{currentType
? currentType.label
: `Choisir parmi la
liste des types de projets`}
</option>
{filteredTypes.map((filteredTypes, key) => {
return (
<option
value={`/api/types/${filteredTypes.id}`}
data-category={filteredTypes.category.label}
key={key}
>
{filteredTypes.label}
</option>
);
})}
我添加了一个默认选项来显示。
当我点击默认选项时,onChange
事件没有被触发。
我该如何解决?
我无法按照您的示例进行操作,因此我创建了一个最小示例来向您展示它是如何工作的:
- 创建状态来存储值,并将select编辑选项的id/value作为默认值
- 编写 onChange 处理程序
- 将状态值和 onChange 处理程序传递给Form.Select
- 在 Form.Select 中遍历你的 select 选项列表
.
const selectOptions = [
{ value: "js", label: "Javascript" },
{ value: "ja", label: "Java" },
{ value: "py", label: "Python" },
{ value: "go", label: "Go" },
{ value: "cs", label: "C#" }
];
export default function App() {
const [value, selectValue] = useState("js");
const handleChange = (event) => selectValue(event.target.value);
return (
<Form.Group className="mb-1">
<Form.Select value={value} onChange={handleChange}>
{selectOptions.map((option) => {
return <option value={option.value}>{option.label}</option>;
})}
</Form.Select>
</Form.Group>
);
}