【问题标题】:How to fix defaultValue of select when using ".map" to get options?使用“.map”获取选项时如何修复选择的默认值?
【发布时间】:2019-05-17 09:52:25
【问题描述】:

我有一个<select> 标签。此标记的选项包含在一个数组中。这个数组的值是我想向用户显示的字段,索引是我想提供给我的“onChange”函数的值。到现在为止还挺好。 但是,当我打开包含<select> 的弹出窗口时,默认值不是我设置的值。

我尝试过设置defaultValue、value,当然我也检查了我想要的默认值。

这是我的意思的一个示例:

options = ["string1", "string2", "string3", ...];
valueIWant = options[indexGivenToFunction];

(...)

<select name="content" defaultValue={valueIWant} onChange={this.changeContent}>
    { options.map((opt, index) => {
        return (
            <option value={ index } key={ opt }>{ opt }</option>
        );
    })}
</select>

我希望打开弹出窗口时的默认值是我在此处设置的值。 但是,它似乎设置为我的数组的第一个值。

我做出的一个(非常)疯狂的猜测是,因为 select 不允许除它提供的字段之外的任何其他字段,并且因为当我设置 defaultValue options.map 时尚未解决,它忽略了该值我给出了它,而是将第一个选项作为该字段的条目(正如我所说,只是一个猜测)。我对吗?有没有办法绕过这种行为来设置一个 defaultValue?

感谢您的帮助。

【问题讨论】:

  • 你试过value而不是defaultValue吗?
  • @Ragnar,选项的值不是数组的索引,而 defaultValue 是该数组的一项吗?
  • 那是您的确切代码吗?你有一个错字,你将valueIWant 设置为option 而不是options 带有“s”。
  • 我猜 defaultValue 也应该是一个索引,或者选项的值应该是一个opt

标签: html css reactjs


【解决方案1】:

在 map 之前使用 * 标记的行。

您的默认值* { options.map((opt, index) => { 返回 ( {选择}

【讨论】:

  • 你会用代码 sn-p(不仅仅是文本)编辑你的答案吗?
猜你喜欢
  • 1970-01-01
  • 2014-12-25
  • 2011-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-06
相关资源
最近更新 更多