React | ref三種使用方式總結
React提供的這個ref屬性,表示為對元件真正例項的引用,其實就是ReactDOM.render()
返回的元件例項;需要區分一下,ReactDOM.render()
渲染元件時返回的是元件例項;而渲染dom
元素時,返回是具體的dom節點。
React不提倡過度使用Ref,Ref提供了一種對於react標準的資料流不太適用的情況下元件間互動的方式。
第一種:字串形式
(不推薦使用)
constructor(props) {
super(props);
this.showInput = this.showInput.bind(this);
}
showInput () {
const input = this.refs.content;//ref第一種用法
alert(input.value);
}
<input type={'text'} ref={'content'}></input>
第二種:設定回撥函式
這個函式執行的時機為:
- 元件被掛載後,回撥函式被立即執行,回撥函式的引數為該元件的具體例項。
- 元件被解除安裝或者原有的ref屬性本身發生變化時,回撥也會被立即執行,此時回撥函式引數為null,以確保記憶體洩露。
constructor(props) {
super(props);
this.showInput = this.showInput.bind(this);
}
showInput () {
alert(this.inputs.value);//this指向元件物件的inputs屬性的值
}
//this指向元件物件,把input儲存到元件物件上,屬性名叫inputs
<input type={'text'} ref={(inputData) => this.inputs = inputData}></input>
第三種:React.CreateRef()
通過在class中使用React.createRef()方法建立一些變數,可以將這些變數繫結到標籤的ref中
constructor(props) {
super(props);
this.myRef = React.createRef();
this.showInput = this.showInput.bind(this);
}
showInput () {
//該變數的current則指向繫結的標籤dom
alert(this.myRef.current.value);
}
<input type={'text'} ref={this.myRef}></input>
<script type="text/babel">
class Index extends React.Component {
constructor(props) {
super(props);
this.showInput = this.showInput.bind(this);
this.handleBlur = this.handleBlur.bind(this);
this.myRef = React.createRef();
}
showInput () {
const input = this.refs.content;//ref第一種用法
alert(input.value);
alert(this.inputs.value);//ref第二種用法
alert(this.myRef.current.value+'1');//ref第三種用法
}
handleBlur (event) {
alert(event.target.value);
}
render() {
return (
<div>
<input type={'text'} ref={this.myRef}></input>
<input type={'text'} ref={'content'}></input>
<input type={'text'} ref={(inputData) => this.inputs = inputData}></input>
<button onClick={this.showInput}>提示輸入</button>
<input type={'text'} onBlur={this.handleBlur} placeholder='失去焦點提示內容' ></input>
</div>
)
}
}
ReactDOM.render(<Index />, document.getElementById('test'));
</script>
相關文章
- Python種匯入模組的三種方式總結Python
- React ref的基本使用React
- react 路由的幾種使用方式React路由
- react-markdown 使用總結React
- React ref的用法React
- React 16 新特性使用總結React
- vue 元件的三種使用方式教程Vue元件
- Spring Boot中@Import三種使用方式!Spring BootImport
- 關於React的refReact
- React ref 的前世今生React
- 陣列的三種宣告方式總結、多維陣列的遍歷、Arrays類的常用方法總結陣列
- Spring Boot 整合 Shiro ,兩種方式全總結!Spring Boot
- SpringBoot獲取HttpServletRequest的3種方式總結Spring BootHTTPServlet
- 日誌管理系統,多種方式總結
- React總結React
- react中的三種方式實現祖孫資料共享React
- Redux 基礎教程以及結合 React 使用方式ReduxReact
- 總結非同步程式設計的六種方式非同步程式設計
- JS 總結之原型繼承的幾種方式JS原型繼承
- 在react中使用Mobx問題總結React
- React Hooks總結ReactHook
- React事件繫結的方式React事件
- AUTOCAD——三種修剪方式
- 三種繼承方式繼承
- TypeScript在React專案中的使用總結TypeScriptReact
- Springboot中使用執行緒池的三種方式Spring Boot執行緒
- React 總結初稿一React
- React入門總結React
- react-router4.2使用js控制路由跳轉的3種方式ReactJS路由
- Spring Boot下Profile的四種切換方式思路總結Spring Boot
- 最全總結!聊聊 Python 傳送郵件的幾種方式Python
- 總結java中建立並寫檔案的5種方式Java
- 四種常見NLP框架使用總結框架
- Mybatis批量更新三種方式MyBatis
- node 除錯三種方式除錯
- HTTP三種快取方式HTTP快取
- selenium-三種等待方式
- mysql 啟停三種方式MySql