javascript - reactJS 动态下拉菜单填充了 map 函数

标签 javascript reactjs

我正在尝试呈现一个简单的下拉列表,其中包含从 1 到 100 的数字。我创建了一个以数组作为唯一元素的对象。我用一个值填充每个数组元素,然后尝试映射该对象以生成下拉项。这是我正在执行的代码:

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>&nbsp;</label>
                </div>
            </div>
        </div>
    )
}

我按照建议修改了 optionItems 映射函数。这是呈现此屏幕时现在生成的内容:

enter image description here

如您所见, map 功能现在正在填充我的下拉列表。但是,下拉列表低于设备的末尾。使用开发人员工具在 Chrome 中查看时,这只是一个错误吗?我注意到的另一件事是下拉列表中的数字比页面的重置字体更大。在我单击下拉箭头之前,值 1 显示在下拉列表中,这是正确的大小,但是一旦我展开下拉列表,数字似乎要大得多。为什么会这样?

再次感谢 stackoverflow 社区!

最佳答案

obj 是一个对象,它没有 map 函数。而 obj.array 是一个具有 map 函数的列表。

下面的代码

let optionItems = obj.map((item) =>
        <option key={item.array}>{item.array}</option>
    );

应该是

let optionItems = obj.array.map((item) =>
        <option key={item}>{item}</option>
    );

关于javascript - reactJS 动态下拉菜单填充了 map 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52786347/

相关文章:

javascript - 如何防止每次调用主机时都创建该类的新实例?

javascript - 让 JQuery 幻灯片只迭代一次?

javascript - 如何在 React.js 中使用 onClick 和 div

reactjs - 如何在 react 中更改 MaterialUI 概述的按钮组边框的颜色?

reactjs - 我什么时候应该在 React 组件中使用 getInitialState

javascript - ReactJS 在客户端和服务器上运行不同的代码。

javascript - jquery fadein 和 fadeout 在本地主机上工作正常,但在 Web 服务器上不行

javascript - 为什么不允许在 React Native 组件属性赋值中展开运算符是一种性能优化?

javascript - <Link> 仅在单击时更改 url,但不更改组件和页面

javascript - 从 JSX 内的渲染访问数组