如何在 select 下拉菜单中的选项下添加子选项?
How to add sub-options under options in select dropdown menu in react?
我正在实现一个 React 应用程序,其中有一个下拉菜单,其中包含使用 json-server
从虚拟后端 api 获取的不同选项 我可以添加选项,但我需要添加也从 api.
中获取的子选项
这是我的 db.json Api 结构:
{
"groups":[
{
"key":"version",
"apis":["system_info","admin"]
},
{
"key":"admin",
"apis":["patients","doctors"]
},
]
}
上面的json响应中keys
是选项,apis
下面的字符串都是子选项。
这是我的下拉菜单实现:
import React from "react";
export default class ApiDropDown extends React.Component {
constructor() {
super();
this.state = {
options: []
};
}
componentDidMount() {
this.fetchOptions();
}
fetchOptions() {
fetch("http://localhost:5000/groups")
.then((res) => {
return res.json();
})
.then((json) => {
console.log(json);
this.setState({ options: json });
});
}
render() {
return (
<div >
<select className="togglebutton" >
<option selected disabled>Choose here</option>
{this.state.options.map((option, key) => (
<option key={key}>{option["key"]}</option>
))}
</select>
</div>
);
}
}
Api 响应:
0: {key: "version", apis: Array(2)}
1: {key: "admin", apis: Array(2)}
上面的下拉菜单适用于选项,但我需要实现子选项。
知道我该如何实现吗?
谢谢!
您可以只获取子选项,因为您没有获取选项。并使用以下代码作为子选项。
render() {
return (
<div >
<select className="togglebutton" >
<option selected disabled>Choose here</option>
{this.state.options.map((option, key) => (
<option key={key}>{option["key"]}</option>
<optgroup label={option["key"]}>
{this.state.subOptions.map((subOption, key) => (
<option>{subOption.key}</option>
))}
// OR
{this.state.option["key"].subOptions.map((subOpt,i) => (
<option>{subOpt.i}</option>
))}
</optgroup>
))}
</select>
</div>
);
}
我正在实现一个 React 应用程序,其中有一个下拉菜单,其中包含使用 json-server
从虚拟后端 api 获取的不同选项 我可以添加选项,但我需要添加也从 api.
这是我的 db.json Api 结构:
{
"groups":[
{
"key":"version",
"apis":["system_info","admin"]
},
{
"key":"admin",
"apis":["patients","doctors"]
},
]
}
上面的json响应中keys
是选项,apis
下面的字符串都是子选项。
这是我的下拉菜单实现:
import React from "react";
export default class ApiDropDown extends React.Component {
constructor() {
super();
this.state = {
options: []
};
}
componentDidMount() {
this.fetchOptions();
}
fetchOptions() {
fetch("http://localhost:5000/groups")
.then((res) => {
return res.json();
})
.then((json) => {
console.log(json);
this.setState({ options: json });
});
}
render() {
return (
<div >
<select className="togglebutton" >
<option selected disabled>Choose here</option>
{this.state.options.map((option, key) => (
<option key={key}>{option["key"]}</option>
))}
</select>
</div>
);
}
}
Api 响应:
0: {key: "version", apis: Array(2)}
1: {key: "admin", apis: Array(2)}
上面的下拉菜单适用于选项,但我需要实现子选项。 知道我该如何实现吗?
谢谢!
您可以只获取子选项,因为您没有获取选项。并使用以下代码作为子选项。
render() {
return (
<div >
<select className="togglebutton" >
<option selected disabled>Choose here</option>
{this.state.options.map((option, key) => (
<option key={key}>{option["key"]}</option>
<optgroup label={option["key"]}>
{this.state.subOptions.map((subOption, key) => (
<option>{subOption.key}</option>
))}
// OR
{this.state.option["key"].subOptions.map((subOpt,i) => (
<option>{subOpt.i}</option>
))}
</optgroup>
))}
</select>
</div>
);
}