Javascript 使用映射函数填充的reactJS动态下拉列表
我试图呈现一个简单的下拉列表,数字从1到100。我创建了一个对象,其中数组是它唯一的元素。我用一个值填充每个数组元素,然后尝试映射对象以生成下拉项。这是我正在执行的代码:Javascript 使用映射函数填充的reactJS动态下拉列表,javascript,reactjs,Javascript,Reactjs,我试图呈现一个简单的下拉列表,数字从1到100。我创建了一个对象,其中数组是它唯一的元素。我用一个值填充每个数组元素,然后尝试映射对象以生成下拉项。这是我正在执行的代码: renderPercent = () => { let obj = { array: [] }; for (var l=0;l<100;l++){ obj.array[l] = l+1; } console.log("obj: ", obj);
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>
)
}
我按照建议修改了optionItems映射函数。这是渲染此屏幕时现在生成的内容:
如您所见,map函数现在正在填充我的下拉列表。但是,下拉列表位于设备末端下方。当使用开发者工具在Chrome中查看时,这只是一个bug吗?我注意到的另一件事是,下拉列表中的数字比页面重置时的字体大。在我单击下拉箭头之前,值1显示在drowdown中,这是正确的大小,但一旦我展开下拉列表,数字似乎要大得多。为什么会这样
再次感谢stackoverflow社区 如果要在对象而不是数组上进行映射,请修改代码,如下所示:
obj.map((item) =>
应该是
obj["array"].map((item) =>
let optionItems = obj.array.map((item) =>
<option key={item}>{item}</option>
);
您可以在console.log中看到这一点。它说{array:[..您正在做的是在对象上映射,但不是在数组上映射。尝试使用.notation
let optionItems = obj.array.map((item) =>
<option key={item.array}>{item.array}</option>
);
完整代码
renderPercent = () => {
let obj = {
array: []
};
for (var l=0;l<100;l++){
obj.array[l] = l+1;
}
return (
<div>
<select>
{obj.array.length > 0 && obj.array.map((item) =>
<option key={item.array}>{item.array}</option>
)}
</select>
</div>
)
}
obj是一个对象,它没有映射函数。而obj.array是一个具有映射函数的列表
下面的代码
let optionItems = obj.map((item) =>
<option key={item.array}>{item.array}</option>
);
应该是
obj["array"].map((item) =>
let optionItems = obj.array.map((item) =>
<option key={item}>{item}</option>
);
试试这样的方法:
var percentArray = [];
for (var l=0;l<100;l++){
percentArray.push(l);
}
let optionItems= percentArray.map(x => `<option key=${x}>${x}</option>`);
...
return (
<div>
<select>
{optionItems}
</select>
</div>
)
你可以这样做
{Array.from(Array(100), (e, i) => {
return <option value={i+1}>{i+1}</option>
}
)}
我将包含一个从0到100的值,这就是为什么我将它设为i+1