[英]How to use react ref to get value from html select element?
我有一個表格,我在其中使用 html select
元素。
<select className="form-control" id="ntype" required >
<option value = "">None</option>
<option value = "1">1</option>
<option value = "2">2</option>
<option value = "3">3</option>
</select>
我知道 html input
類型元素我們可以像下面的代碼一樣附加ref
ref = {(input) => { this.nHeading = input; }}
和
<input
type = "text"
className = "form-control"
id = "tInput"
placeholder = "Sample input"
ref = {(input) => { this.sInput = input; }}
required
/>
如何在提交表單時將 ref 附加到<Select>
元素並從附加的ref
中獲取選定的option value
?
我是否需要將ref
附加到每個選項或select
元素本身?
您可以將值存儲在更改后的狀態中,以后再使用,即使其成為受控組件
class App extends React.Component { constructor() { super(); this.state = {selectValue: ''} } callThis = (e) => { this.setState({selectValue: e.target.value}, ()=> {console.log(this.state.selectValue)}); } render() { return ( <select onChange={this.callThis}className="form-control" id="ntype" required > <option value = "">None</option> <option value = "1">1</option> <option value = "2">2</option> <option value = "3">3</option> </select> ) } } ReactDOM.render(<App/>, document.getElementById('app'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script> <div id="app"></div>
或者您可以使用refs
這樣獲得值
class App extends React.Component { constructor() { super(); this.state = {selectValue: ''} } callThis = (e) => { console.log(this.selectVal.value) } render() { return ( <div><select ref={(input) => this.selectVal = input} className="form-control" id="ntype" required > <option value = "">None</option> <option value = "1">1</option> <option value = "2">2</option> <option value = "3">3</option> </select> <input type="button" value="click" onClick={this.callThis}/></div> ) } } ReactDOM.render(<App/>, document.getElementById('app'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script> <div id="app"></div>
我會給每個元素一個值和像這樣的select元素的onChange處理函數
<select className="form-control"onChange={this.onChange.bind(this)}>
<option value="">None</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
並定義一個onChange處理程序以設置選擇狀態
onChange(e){
this.setState({value: e.target.value}, function(){
// do other stuff
});
}
如果您使用的是 React 功能組件,則可以執行以下操作。
import { useState, useRef } from 'react';
...
const selectRef = useRef(null)
<select className="form-control" id="ntype" required ref={selectRef}>
<option value = "">None</option>
<option value = "1">1</option>
<option value = "2">2</option>
<option value = "3">3</option>
</select>
然后您可以通過以下方式訪問提交邏輯中的值,
selectRef.current.value
您可以只使用 onChange function 來設置 Ref 的值。 例如:
<select className="form-control" id="ntype" required onChange={e => {yourRef.current = e.target.value}} >
<option value = "">None</option>
<option value = "1">1</option>
<option value = "2">2</option>
<option value = "3">3</option>
</select>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.