映射数组时如何设置选择选项的默认值

Posted

技术标签:

【中文标题】映射数组时如何设置选择选项的默认值【英文标题】:How to set the default value of a select option when mapping over array 【发布时间】:2021-11-04 18:36:03 【问题描述】:

我正在使用来自 reactstrap 的 CustomInput。我正在设置要选择的类型。在我的 CustomInput type="select" 中,我正在映射数组中的选项。我需要将选择中的默认值设置为正在映射的特定选项。例如。我希望默认为美国或德国,现在我正在映射一系列不同的国家/地区。

下面是我的代码

<CustomInput
          type="select"
          id="country"
          name="country"
          className="mb-3"
          value=country.countryCode
          onChange=handleChange
        >
          
          numberCountries.map((countryCode, name) => ( 
            <Fragment>
              <option key=countryCode value=countryCode>name</option> <--- how can i set a one of these options to be the default value rendered on the screen?
            </Fragment>
          ))
       
        </CustomInput>

这是我正在映射的对象

[

    name: 'United States',
    countryCode: 'US'
  ,

    name: 'Germany',
    countryCode: 'DE'
  
]

【问题讨论】:

您可以在父 CustomInput 上将其设置为 value 用于动态/受控选择,或 defaultValue 用于加载初始值。 【参考方案1】:

DOM 可能支持默认值,但在受控输入组件中,你必须想出

  <input value=value onChange=onChange />

并且该值必须是您选择的当前值。因此,如果您根据使用选择更改它,则必须通过设置它。

  const onChange = e => 
    setValue(e.target.value)
  

这意味着该值始终与选择同步。如果您直接使用 DOM,情况就不同了。

好的,现在有了这个了解,如果你想设置一些默认的东西,你可以这样做。

  const [value, setValue] = useState(country.countryCode || defaultCode)

说实话,即使 DOM 提供了默认行为,您也应该想要覆盖它。因为否则你最终会出现一些奇怪的行为。

【讨论】:

这种方法回答了我的问题。我的特殊解决方案是将初始状态设置为数组 0 索引,如下所示, const [country, setCountry] = useState(numberCountries[0]

以上是关于映射数组时如何设置选择选项的默认值的主要内容,如果未能解决你的问题,请参考以下文章

加载时选择选项默认值不显示,选择其他选项时不显示

如何在 django 中为分组选项设置默认值

如何在 django 中为分组选项设置默认值

当我只有两个选项时,如何在选择选项中设置默认值?

Select2 多个 - 如何设置空白默认值

Select2.js v4.0:如何使用本地数组数据源设置默认选择值?