久久久久在线观看_又色又爽又黄的免费视频播放_一区中文字幕_日韩电影在线播放

今日頭條 焦點資訊 營銷之道 企業報道 淘寶運營 網站建設 軟件開發 400電話
  當前位置: 首頁 » 資訊 » 軟件開發 » 正文

React中的refs的使用教程分享

放大字體  縮小字體 發布日期:2018-02-22  來源:企業800網  作者:新格網  瀏覽次數:1000  【去百度看看】
核心提示:?ref是React中的一種屬性,當render函數返回某個組件的實例時,可以給render中的某個虛擬DOM節點添加一個ref屬性,如下面的代碼所示:
ref是React中的一種屬性,當render函數返回某個組件的實例時,可以給render中的某個虛擬DOM節點添加一個ref屬性,如下面的代碼所示:


<body> 
  <script type="text/jsx"> 
    var App = React.createClass({ 
      render: function() { 
        return ( 
          <p> 
            <input type="text" placeholder="input something..." ref="input" /> 
          </p> 
        ); 
      } 
    }); 
    React.render( 
      <App />, 
      document.body 
    ); 
  </script> 
</body>

在上面的代碼中,render函數里僅僅返回了一個<p>標簽,<p>里僅有一個<input>標簽,在<input>標簽的屬性中,添加了一個ref屬性,官方文檔上對于ref屬性的解釋如下:

ref 屬性

React 支持一種非常特殊的屬性,你可以用來綁定到 render() 輸出的任何組件上去。這個特殊的屬性允許你引用 render() 返回的相應的支撐實例( backing instance )。這樣就可以確保在任何時間總是拿到正確的實例。

給<input>標簽設置ref屬性有什么用途呢?下面是官方文檔給出的解釋:

在其它代碼中(典型地事件處理代碼),通過 this.refs 獲取支撐實例( backing instance ),就像這樣:this.refs.input。其中"input"就是上面給<input>標簽設置的ref屬性的值。

通過ref屬性,我們還可以拿到該虛擬DOM對應的真實DOM節點,有兩種方法可以拿到真實DOM節點,如下代碼所示:


<input type="text" ref="username" /> 
//下面4種方式都可以通過ref獲取真實DOM節點 
var usernameDOM = this.refs.username.getDOMNode(); 
var usernameDOM = React.findDOMNode(this.refs.username); 
var usernameDOM = this.refs['username'].getDOMNode(); 
var usernameDOM = React.findDOMNode(this.refs['username']);

下面通過一個demo來了解ref的使用:

demo在瀏覽器中運行的效果如下圖:

在最上面的輸入框中輸入任意1-10的數字,即可讓下面10個輸入框中對應的輸入框獲取焦點,如上圖,輸入3后,下面第3個輸入框馬上獲取焦點,這里就用到了ref屬性,代碼如下:


<!DOCTYPE html> 
<html lang="en"> 
<head> 
  <meta charset="UTF-8"> 
  <title>Refs</title> 
  <script type="text/javascript" src="http://www.argcandargv.com/skin/default/image/lazy.gif" class="lazy" original="http://www.argcandargv.com/skin/default/image/nopic.gif" 
  <script type="text/javascript" src="http://www.argcandargv.com/skin/default/image/lazy.gif" class="lazy" original="http://www.argcandargv.com/skin/default/image/nopic.gif" 
</head> 
<body> 
  <script type="text/jsx"> 
    var App = React.createClass({ 
      handleChange: function(event) { 
        var index = event.target.value; 
        if(index >= 1 && index <= 10) { 
          //找到對應的輸入框并將焦點設置到里面 
          var refName = "input" + index; 
          //var inputDOM = React.findDOMNode(this.refs[refName]); 
          var inputDOM = this.refs[refName].getDOMNode(); 
          inputDOM.focus(); 
        } 
      }, 
      render: function() { 
        var inputs = []; 
        for(var i = 1; i <= 10; i++) { 
          inputs.push(<p><li><input type="text" ref={"input" + i}/></li><br/></p>); 
        } 
        return ( 
          <p> 
            <label htmlFor="input" >在這里輸入下面任意輸入框的索引,光標會自動定位到輸入框內:</label> 
            <input type="text" id="input" onChange={this.handleChange} /> 
            <hr /> 
            <ol> 
              {inputs} 
            </ol> 
          </p> 
        ) 
      } 
    }); 
    React.render( 
      <App />, 
      document.body 
    ); 
  </script> 
</body> 
</html>

在render函數中,為html文檔的body部分添加了10個輸入框,每個輸入框的ref屬性都設置成了["index" + 索引]的這種方式,然后在最上面的輸入框的handleChange函數中,獲取輸入的數字,并得到ref屬性的值,最后根據ref屬性的值,找到對應的真實DOM節點,然后讓該DOM節點獲取焦點。

相關推薦:

React組件refs的使用實例分享

以上就是React中的refs的使用教程分享的詳細內容,更多請關注php中文網其它相關文章!

 
關鍵詞: React,refs,教程
 
[ 資訊搜索 ]  [ 加入收藏 ]  [ 告訴好友 ]  [ 打印本文 ]  [ 違規舉報 ]  [ 關閉窗口 ]

 
0條 [查看全部]  相關評論

 
網站首頁 | 關于我們 | 聯系方式 | 使用協議 | 版權隱私 | 網站地圖 | 排名推廣 | 廣告服務 | 積分換禮 | 網站留言 | RSS訂閱 | 吉ICP備11001726號-6
企業800網 · 提供技術支持