欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

React中的refs的使用教程

 更新時(shí)間:2018年02月13日 11:28:55   作者:明天你好_  
本篇文章主要介紹了React中的refs的使用教程,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

ref是React中的一種屬性,當(dāng)render函數(shù)返回某個(gè)組件的實(shí)例時(shí),可以給render中的某個(gè)虛擬DOM節(jié)點(diǎn)添加一個(gè)ref屬性,如下面的代碼所示:

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

在上面的代碼中,render函數(shù)里僅僅返回了一個(gè)<div>標(biāo)簽,<div>里僅有一個(gè)<input>標(biāo)簽,在<input>標(biāo)簽的屬性中,添加了一個(gè)ref屬性,官方文檔上對(duì)于ref屬性的解釋如下:

ref 屬性

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

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

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

通過ref屬性,我們還可以拿到該虛擬DOM對(duì)應(yīng)的真實(shí)DOM節(jié)點(diǎn),有兩種方法可以拿到真實(shí)DOM節(jié)點(diǎn),如下代碼所示:

<input type="text" ref="username" /> 
//下面4種方式都可以通過ref獲取真實(shí)DOM節(jié)點(diǎn) 
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']); 

下面通過一個(gè)demo來了解ref的使用:

demo在瀏覽器中運(yùn)行的效果如下圖:

在最上面的輸入框中輸入任意1-10的數(shù)字,即可讓下面10個(gè)輸入框中對(duì)應(yīng)的輸入框獲取焦點(diǎn),如上圖,輸入3后,下面第3個(gè)輸入框馬上獲取焦點(diǎn),這里就用到了ref屬性,代碼如下:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
  <meta charset="UTF-8"> 
  <title>Refs</title> 
  <script type="text/javascript" src="../react-0.13.0/build/react.js"></script> 
  <script type="text/javascript" src="../react-0.13.0/build/JSXTransformer.js"></script> 
</head> 
<body> 
  <script type="text/jsx"> 
    var App = React.createClass({ 
      handleChange: function(event) { 
        var index = event.target.value; 
        if(index >= 1 && index <= 10) { 
          //找到對(duì)應(yīng)的輸入框并將焦點(diǎn)設(shè)置到里面 
          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(<div><li><input type="text" ref={"input" + i}/></li><br/></div>); 
        } 
        return ( 
          <div> 
            <label htmlFor="input" >在這里輸入下面任意輸入框的索引,光標(biāo)會(huì)自動(dòng)定位到輸入框內(nèi):</label> 
            <input type="text" id="input" onChange={this.handleChange} /> 
            <hr /> 
            <ol> 
              {inputs} 
            </ol> 
          </div> 
        ) 
      } 
    }); 
    React.render( 
      <App />, 
      document.body 
    ); 
  </script> 
</body> 
</html> 

在render函數(shù)中,為html文檔的body部分添加了10個(gè)輸入框,每個(gè)輸入框的ref屬性都設(shè)置成了["index" + 索引]的這種方式,然后在最上面的輸入框的handleChange函數(shù)中,獲取輸入的數(shù)字,并得到ref屬性的值,最后根據(jù)ref屬性的值,找到對(duì)應(yīng)的真實(shí)DOM節(jié)點(diǎn),然后讓該DOM節(jié)點(diǎn)獲取焦點(diǎn)。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • react中hook介紹以及使用教程

    react中hook介紹以及使用教程

    這篇文章主要給大家介紹了關(guān)于react中hook及使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • React實(shí)現(xiàn)一個(gè)通用骨架屏組件示例

    React實(shí)現(xiàn)一個(gè)通用骨架屏組件示例

    骨架屏就是在頁(yè)面數(shù)據(jù)尚未加載前先給用戶展示出頁(yè)面的大致結(jié)構(gòu),直到請(qǐng)求數(shù)據(jù)返回后再渲染頁(yè)面,補(bǔ)充進(jìn)需要顯示的數(shù)據(jù)內(nèi)容,本文就介紹了React實(shí)現(xiàn)一個(gè)通用骨架屏組件示例,分享給大家,感興趣的可以了解一下
    2021-12-12
  • 在Create React App中使用CSS Modules的方法示例

    在Create React App中使用CSS Modules的方法示例

    本文介紹了如何在 Create React App 腳手架中使用 CSS Modules 的兩種方式。有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。
    2019-01-01
  • React通過ref獲取子組件的數(shù)據(jù)和方法

    React通過ref獲取子組件的數(shù)據(jù)和方法

    這篇文章主要介紹了React如何通過ref獲取子組件的數(shù)據(jù)和方法,文中有詳細(xì)的總結(jié)內(nèi)容和代碼示例,具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-10-10
  • 使用React組件編寫溫度顯示器

    使用React組件編寫溫度顯示器

    這篇文章主要為大家詳細(xì)介紹了使用React組件編寫溫度顯示器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • React如何使用axios請(qǐng)求數(shù)據(jù)并把數(shù)據(jù)渲染到組件

    React如何使用axios請(qǐng)求數(shù)據(jù)并把數(shù)據(jù)渲染到組件

    這篇文章主要介紹了React如何使用axios請(qǐng)求數(shù)據(jù)并把數(shù)據(jù)渲染到組件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 詳解React?Fiber架構(gòu)原理

    詳解React?Fiber架構(gòu)原理

    Fiber?可以理解為一個(gè)執(zhí)行單元,每次執(zhí)行完一個(gè)執(zhí)行單元,React?Fiber就會(huì)檢查還剩多少時(shí)間,如果沒有時(shí)間則將控制權(quán)讓出去,然后由瀏覽器執(zhí)行渲染操作,這篇文章主要介紹了React?Fiber架構(gòu)原理剖析,需要的朋友可以參考下
    2022-08-08
  • React中Redux Hooks的使用詳解

    React中Redux Hooks的使用詳解

    這篇文章主要介紹了React Redux Hooks的使用詳解,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • React新擴(kuò)展函數(shù)setState與lazyLoad及hook介紹

    React新擴(kuò)展函數(shù)setState與lazyLoad及hook介紹

    這篇文章主要介紹了React新擴(kuò)展函數(shù)setState與lazyLoad及hook,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-12-12
  • React中Key屬性作用

    React中Key屬性作用

    react中的key屬性,它是一個(gè)特殊的屬性,它是出現(xiàn)不是給開發(fā)者用的,而是給React自己使用,有了key屬性后,就可以與組件建立了一種對(duì)應(yīng)關(guān)系,本文主要介紹了React中Key屬性作用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01

最新評(píng)論