如何在反应选择下拉菜单中的选项下添加子选项?
Posted
技术标签:
【中文标题】如何在反应选择下拉菜单中的选项下添加子选项?【英文标题】:How to add sub-options under options in select dropdown menu in react? 【发布时间】:2021-08-23 15:12:59 【问题描述】:我正在实现一个反应应用程序,其中有一个带有不同选项的下拉菜单,这些选项是使用 json-server
从虚拟后端 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)
上面的下拉菜单适用于选项,但我需要实现子选项。 知道如何实现吗?
谢谢!
【问题讨论】:
【参考方案1】:您可以只获取子选项,因为您没有获取选项。并使用下面的代码作为 sub 选项。
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>
);
【讨论】:
我是否需要添加该 通过添加这些行得到错误Cannot read property '0' of undefined
是的,它为嵌套选择选项创建了一个组。
对于子选项,我分享了两种方法,您必须根据您的数据使用它们。那么你在那里使用什么方法?
我正在使用的第二个以上是关于如何在反应选择下拉菜单中的选项下添加子选项?的主要内容,如果未能解决你的问题,请参考以下文章
如何选择下拉菜单中的所有选项 - Selenium Webdriver?
如何在 Jquery Date Picker 中添加请选择月份年份下拉菜单的选项?