我试图用1到100的数字来呈现一个简单的下拉列表。我创建了一个对象,将数组作为它的唯一元素。我用一个值填充每个数组元素,然后我试图Map该对象以生成下拉列表项。这是我正在执行的代码:
renderPercent = () => {
let obj = {
array: []
};
for (var l=0;l<100;l++){
obj.array[l] = l+1;
}
console.log("obj: ", obj);
let optionItems = obj.array.map((item) =>
<option key={item}>{item}</option>
);
return (
<div>
<div className="row">
<div className="col-9 text-left">
<label>Select the percent to transfer</label>
</div>
<div className="col-2 text-left">
<select>
{optionItems}
</select>
</div>
<div className="col-1 text-left">
<label> </label>
</div>
</div>
</div>
)
}
我按照建议修改了optionItemsMap函数,这是现在呈现这个屏幕时生成的内容:
正如你所看到的,Map功能现在填充了我的下拉菜单。然而,下拉菜单在设备的底部。这只是在Chrome中使用开发者工具查看时的一个bug吗?我注意到的另一件事是,下拉菜单中的数字字体比页面的重置字体大。在我点击下拉箭头之前,数值1显示在下拉菜单中,这是正确的大小,但是当我扩展下拉菜单时,数字看起来要大得多。2为什么会这样呢?
再次感谢stackoverflow社区!
6条答案
按热度按时间laawzig21#
obj
是一个对象,它没有map
函数,而obj.array
是一个列表,它有map
函数。下面的代码
应该是
carvr3hs2#
您正尝试Map到对象而不是数组,请将代码修改为:
应该是
您可以在console.log中看到这一点。它显示为**{array:[**....
jgwigjjp3#
你能做到的。
“i”将包含0到100之间的值,这就是为什么我将其设置为“i+1”
bvn4nwqk4#
您正在对象上而不是数组上执行.map。请尝试使用. notation
完全码
4si2a6ki5#
试试这样的:
wgxvkvu96#
我使用下面的代码通过“selectArry”实现下拉功能。