最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

React中的refs的使用教程

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

ref是React中的一種屬性,當render函數(shù)返回某個組件的實例時,可以給render中的某個虛擬DOM節(jié)點添加一個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ù)里僅僅返回了一個<div>標簽,<div>里僅有一個<input>標簽,在<input>標簽的屬性中,添加了一個ref屬性,官方文檔上對于ref屬性的解釋如下:

ref 屬性

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

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

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

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

<input type="text" ref="username" /> 
//下面4種方式都可以通過ref獲取真實DOM節(jié)點 
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的數(shù)字,即可讓下面10個輸入框中對應(yīng)的輸入框獲取焦點,如上圖,輸入3后,下面第3個輸入框馬上獲取焦點,這里就用到了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) { 
          //找到對應(yīng)的輸入框并將焦點設(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" >在這里輸入下面任意輸入框的索引,光標會自動定位到輸入框內(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個輸入框,每個輸入框的ref屬性都設(shè)置成了["index" + 索引]的這種方式,然后在最上面的輸入框的handleChange函數(shù)中,獲取輸入的數(shù)字,并得到ref屬性的值,最后根據(jù)ref屬性的值,找到對應(yīng)的真實DOM節(jié)點,然后讓該DOM節(jié)點獲取焦點。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • React Native按鈕Touchable系列組件使用教程示例

    React Native按鈕Touchable系列組件使用教程示例

    這篇文章主要為大家介紹了React Native按鈕Touchable系列組件使用教程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • React中使用react-json-view展示JSON數(shù)據(jù)的操作方法

    React中使用react-json-view展示JSON數(shù)據(jù)的操作方法

    react-json-view是一個用于顯示和編輯javascript數(shù)組和JSON對象的React組件,本文給大家分享React中使用react-json-view展示JSON數(shù)據(jù)的操作方法,感興趣的朋友一起看看吧
    2023-12-12
  • 使用webpack配置react-hot-loader熱加載局部更新

    使用webpack配置react-hot-loader熱加載局部更新

    這篇文章主要介紹了使用webpack配置react-hot-loader熱加載局部更新,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • React中的常用Hooks分享

    React中的常用Hooks分享

    React?提供了許多常用的?Hooks,用于在函數(shù)組件中添加狀態(tài)管理、副作用處理和其他功能,本文主要介紹了其中幾個常用的,需要的可以收藏一下
    2023-07-07
  • 淺談React useDebounce 防抖原理

    淺談React useDebounce 防抖原理

    本文主要介紹了淺談React useDebounce 防抖原理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • React組件中監(jiān)聽函數(shù)獲取不到最新的state問題

    React組件中監(jiān)聽函數(shù)獲取不到最新的state問題

    這篇文章主要介紹了React組件中監(jiān)聽函數(shù)獲取不到最新的state問題問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • React?18?如何更新?state?中的對象

    React?18?如何更新?state?中的對象

    state 中可以保存任意類型的JavaScript值,包括對象,但是,不應(yīng)該直接修改存放在 React state 中的對象,這篇文章主要介紹了React?18更新state中的對象,需要的朋友可以參考下
    2023-08-08
  • 學習ahooks useRequest并實現(xiàn)手寫

    學習ahooks useRequest并實現(xiàn)手寫

    這篇文章主要為大家介紹了學習ahooks useRequest并實現(xiàn)手寫示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • react  Suspense工作原理解析

    react  Suspense工作原理解析

    這篇文章主要為大家介紹了react  Suspense工作原理解析以及基本應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • 一文詳解React渲染優(yōu)化之useImmer

    一文詳解React渲染優(yōu)化之useImmer

    在React日常開發(fā)中,我們常常被重復渲染或無意義渲染所折磨,窮盡腦汁,做各種優(yōu)化:memo、useMemo、useCallback、immutable等,本文主要講述immutable的簡約版Immer,感興趣的同學可以一起來學習
    2023-05-05

最新評論

平安县| 苏尼特右旗| 墨玉县| 大石桥市| 共和县| 鹤岗市| 沈阳市| 安新县| 凤庆县| 孙吴县| 探索| 遂平县| 宁海县| 三台县| 黔东| 当涂县| 汉寿县| 安西县| 大同市| 海盐县| 谷城县| 卓资县| 磴口县| 循化| 股票| 嘉义县| 乌苏市| 庄浪县| 肥西县| 静安区| 鄂温| 通城县| 嘉鱼县| 敦化市| 行唐县| 金寨县| 固始县| 昌黎县| 伊金霍洛旗| 宿松县| 鹤岗市|