【问题标题】:Set default value of dropdown in React在 React 中设置下拉菜单的默认值
【发布时间】:2021-11-24 09:32:21
【问题描述】:

我有一个数组,如 [ {code: 'in', name: 'India' }, ...] 用于所有国家/地区,并使用map 将所有国家/地区的下拉列表呈现为option。我想在组件渲染时将 India 设置为默认值,但我总是将 Argentina 作为默认选项,因为它在数组中是第一个。 请建议我实现它的方法。我试图找到答案,但这些都不起作用,或者可能是我做错了什么。这是所需的代码:

export default function NavBar({ setUserSearch, country, setCountry }) {

    const handleCountryChange = (e) => {
        setCountry({code: e.target.value, name: e.target.innerText})
    }

    return (
        <select className="country_dropdown mx-3 py-1 px-1 text-dark" onChange = {handleCountryChange}> 
            {countries.map(country => {
                 return <option value = {country.code} key = {country.code}>{country.name} 
                        </option>
                       }
                  )
             }
        </select>
           ) 
}

【问题讨论】:

  • 你在哪里绑定selectvalue属性?
  • 我给值属性一个状态“国家”,默认情况下是“印度”,并在选择任何其他选项时使用“onChange”事件侦听器上的回调函数“handleCountryChange”更改其状态
  • 我的意思是实际选择。就像将此表单元素的值绑定到特定的状态属性一样。然后 React 可以有效地使用选项元素上指定的值来确定它是否被自动选择。

标签: reactjs react-functional-component


【解决方案1】:

option 有一个名为“selected”的属性,它是一个布尔设置。
所以你可以这样做 -

<select className="country_dropdown mx-3 py-1 px-1 text-dark" onChange = {handleClick}> 
   {countries.map(country => {
      return <option value={country.code} key={country.code} selected={country.code === 'in'}>
                {country.name}
             </option>
   })}
</select>

让我知道这是否适合你。

【讨论】:

  • 让我知道答案,但这里有一个演示应该如何工作:stackblitz.com/edit/react-43uxrt?file=src%2FNavbar.jsx
  • 抱歉,干得好!
  • 是的,它成功了!我也尝试过使用这种方式 selected={country.code === 'in' ? true : false} 但这给了我一个警告“使用值或默认值道具而不是选择选项”。您能告诉我为什么它与您的答案不同吗?
猜你喜欢
  • 2018-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-25
  • 2019-09-25
  • 1970-01-01
  • 2021-08-03
相关资源
最近更新 更多