javascript - 为什么我使用数组映射方法创建的选项具有空值(React)?
问题描述
我使用了一个 for 循环来创建数字 1-12 的月份数组。
然后,我尝试使用映射数组方法为每个数字创建 12 个选项。
但是选项有空值。
这是一个示例代码:
export default ({ experience }) => {
let monthOptions = [];
for (let i = 1; i < 13; i++) {
monthOptions.push(i);
}
return (
<select name="month" id="month">
{
monthOptions.map((month) => {
return <option value={month} />;
})
}
</select>
)
};
解决方案
显示值取自label
属性或标记内容,它与将传递给事件处理程序的实际值不同。要在选项中显示一个值,请在呈现标签时包含它:
<option value={month}>{month}</option>;
或者使用label
属性:
<option value={month} label={month} />
例子:
const Example = () => {
const monthOptions = [];
for (let i = 1; i < 13; i++) {
monthOptions.push(i);
}
return (
<select name="month" id="month">
{
monthOptions.map((month) => (
<option key={month} value={month}>{month}</option>
))
}
</select>
)
};
ReactDOM.render(
<Example />,
root
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.1/umd/react-dom.production.min.js"></script>
<div id="root"></div>
您可以使用Array.from()
.
注意:在本例中,您可以看到value
, 和 display 的值不相同。
const Example = () => (
<select name="month" id="month">
{
Array.from({ length: 12 }, (_, month) => (
<option value={month} key={month}>
{month + 1}
</option>
))
}
</select>
);
ReactDOM.render(
<Example />,
root
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.1/umd/react-dom.production.min.js"></script>
<div id="root"></div>
推荐阅读
- azure - 如何在 Azure AD B2C 中添加来自外部 AD 提供程序的输出声明“组”?(自定义政策)
- linux - 无法更新配置单元中的表。
- java - 如何在java中执行mongodb查询
- xml - 使用来自另一个包的 xsd 验证 xml,提供 xsd 的相对路径
- php - 为什么这个使用 AJAX 动态添加的选择输入不起作用?
- javascript - javascript中的正则表达式限制一些特殊字符,如“%,+,>,<,`”
- r - r - 如果满足条件,则重新排序某些行
- php - 热门在 PHP DOM 文档输出中添加新行 \r\n 和选项卡?
- testing - 嵌入式 Kafka:无法在 5000 毫秒内从 Kafka 检索消息
- angular - 角度显示动态嵌套列表