<Form.Group controlId="phoneName">
<Form.Label>Phone Names</Form.Label>
<Form.Control
as="select"
name="phoneName"
value={values.phoneName}
onChange={handleChange}
isInvalid={!!errors.phoneName && !!touched.phoneName}
>
{phones.map((item, index) => {
return (
<div key={index}>
{item.phoneName.map((phone, index) => {
return <option key={index}>{phone.name}</option>;
})}{" "}
</div>
);
})}
</Form.Control>
<Form.Control.Feedback type="invalid">
{" "}
{errors.phoneName}{" "}
</Form.Control.Feedback>
</Form.Group>;
输出打印标签,下拉列表为空,但可以在inspect--〉elements--〉中看到结果,在html中,我选择了下拉列表并看到了结果,值来自GitHub另一个分支中的JSON,因此我使用API调用获取数据,它工作正常,所以我首先使用下拉菜单来获得项目电话,之后我想从名为phoneName的下拉菜单中选择以获得像Nokia这样的选项,三星等,但只有标签的东西不打印正确的值在表单控件
[
{
gadgets: "phone",
phoneName: [
{ name: "nokia", phoneColor: "blue", memory: "enough" },
{ name: "samsung", phoneColor: "black", memory: "little" },
],
},
{
gadgets: "ipad",
phoneName: [
{ name: "apple", phoneColor: "white", memory: "high" },
{ name: "samsung-g", phoneColor: "black", memory: "low" },
],
},
];
1条答案
按热度按时间piztneat1#
我不确定你在表单中使用的是什么库,也没有明确的例子来说明你想实现什么,但是下面的例子可能会给你一个正确的方向。
首先,您尝试在选择列表中呈现一个div。
Select
列表通常使用options
。我再次不确定您使用的库,因此无法做出准确的假设其次,你的代码中有一个错误,我已经通过编辑你的帖子修复了这个错误。在第2行你输入了
<Form.Label>Phone Names</<Form.Label>
。结束标记不正确我个人的看法是,您的数据没有以最优化的方式进行标记。我会将
phoneName
更改为gadgetList
,因为数组包含与gadget
属性关联的所有小工具为了达到我认为你想要达到的效果,你可以尝试以下方法:
这实际上将用2
select lists
Map出2divs
。选择选项将是电话名称。下面是一个例子:https://codesandbox.io/s/silly-maxwell-tylpwd?file=/src/App.js
希望这能对你有所帮助。如果没有,请把你的代码放入沙箱,这样我们就能帮助你更好地解决问题:)