亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 React JS 中獲取所選選項的 ID

如何在 React JS 中獲取所選選項的 ID

慕姐8265434 2022-12-22 13:00:11
我創建了一個非常簡單的選擇框。<FormGroup>  <label for='category' className='label'>Category</label>  <select ref="categoryName">    {categoriesList}  </select></FormGroup>和let categoriesList = categories.map(category =>  <option id={category.id}>      {category.type}   </option> )我想弄清楚如何獲取下拉列表中所選選項的“id”屬性值,我想使用此值進行進一步處理。請指教。謝謝
查看完整描述

2 回答

?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

您可以將onChange事件處理程序添加到 select 以檢查所選索引并從所選選項中檢索 id。


onChangeHandler = (e) => {

  const index = e.target.selectedIndex;

  const el = e.target.childNodes[index]

  const option =  el.getAttribute('id');  

}


<FormGroup>

  <label for='category' className='label'>Category</label>

  <select onChange={onChangeHandler}>

      {categories.map(category =>

          <option id={category.id}>

             {category.type}

          </option>

      )}

  </select>

</FormGroup>


查看完整回答
反對 回復 2022-12-22
?
HUWWW

TA貢獻1874條經驗 獲得超12個贊

理想情況下,您應該盡量避免從 DOM 獲取狀態。


如果你控制狀態,讓 React 來渲染你的狀態,React 工作得很好。


下面是一個簡單的例子,基本上我所做的就是將狀態索引存儲到一個數組中。當我更新它時,React 視圖將相應地更新。你如何存儲狀態完全取決于你,而不是 DOM。


const {useState} = React;


const lookup = [

  {id: 1, value: 'one'},

  {id: 2, value: 'two'},

  {id: 3, value: 'three'}

];



function List() {

  const [selected, setSelected] = useState(-1); 

  const value = selected !== -1 && lookup[selected];

  return <div>

    <select 

      onChange={(e) => setSelected(e.target.value)}

      value={selected}>

      <option>Please Selected an option</option>

      {lookup.map((m, ix) => {

        return <option 

          key={m.id}

          value={ix}

        >

         {m.value}

        </option>

      })};

    </select>

    {value &&

    <div style={{marginTop: "2rem"}}>

      You selected ID <span>{value.id}</span>

      value

      <span>{value.value}</span>

    </div>}

   </div>;

}




ReactDOM.render(<List/>, document.querySelector('#mount'));

body, select, option {

 font-size: 20px;

}

select, option {

 padding: 0.5rem;

}

body {

  padding: 2rem;

}

span {

  font-weight: bold;

  margin: 1em;

  background-color: yellow;

  border: 1px solid black;

  padding: 1em 1.5rem;

  border-radius: 50%;

}

<script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>

<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>


<div id="mount"/>


查看完整回答
反對 回復 2022-12-22
  • 2 回答
  • 0 關注
  • 159 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號