国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

React組件refs的使用詳解

2024-05-06 15:21:56
字體:
來源:轉載
供稿:網友

ref顧名思義我們知道,其實它就可以被看座是一個組件的參考,也可以說是一個標識。作為組件的屬性,其屬性值可以是一個字符串也可以是一個函數。

其實,ref的使用不是必須的。即使是在其適用的場景中也不是非用不可的,因為使用ref實現的功能同樣可以轉化成其他的方法來實現。但是,既然ref有其適用的場景,那也就是說ref自有其優勢。關于這一點和ref的適用場景,官方文檔中是這樣說的:

在從 render 方法中返回 UI 結構之后,你可能想沖出 React 虛擬 DOM 的限制,在 render 返回的組件實例上調用某些方法。通常來說,這樣做對于應用中的數據流動是不必要的,因為活躍的數據( Reactive data )流總是確保最新的 props 被傳遞到每一個從 render() 輸出的子級中去。然而,仍然有幾個場景使用這種方式是必須的,或者說是有益的:查找渲染出的組件的DOM標記(可以認為是DOM的標識ID),在一個大型的非React應用中使用React組件或者是將你現有的代碼轉化成React。

下面我們來看這樣的一個場景(下面的例子經常被用于ref的講解,可見下面描述的場景應該是比較經典的):通過某個事件使<input />元素的值被設為空字符串,然后使該<input />元素獲得焦點。

var App = React.createClass({  getInitialState: function() {   return {userInput: ''};  },  handleChange: function(e) {   this.setState({userInput: e.target.value});  },  clearAndFocusInput: function() {   this.setState({userInput: ''}); // 設置值為空字符串        //這里想要實現獲得焦點     },  render: function() {   return (    <div>     <input      value={this.state.userInput}      onChange={this.handleChange}     />          <input type="button"           value="Reset And Focus"           onClick={this.clearAndFocusInput}        />    </div>   );  } });

在上面例子中,我們已經實現了點擊按鈕通知input元素將值設為空字符串,但是還沒有實現使input元素獲得焦點。這實現起來有些困難,因為在render()中返回的并不是實際的子組件的組合,僅僅是一個特定時間特定實例的描述。這句話感覺挺繞的,其實render返回的是虛擬的DOM,并不是真實的DOM。因此我們不需要僅僅著眼于那些從render()中返回的那些組件。

那說到這,對于我們如何實現獲得焦點并沒有太大的幫助。要想實現獲得焦點這個功能我們需要借助ref來實現。上面我們提到過ref的值有兩種類型,一種是字符串、一種是回調函數。

ref字符串上屬性

React支持一個特殊的屬性,你可以將這個屬性加在任何通過render()返回的組件中。這也就是說對render()返回的組件進行一個標記,可以方便的定位的這個組件實例。這就是ref的作用。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 阿克陶县| 湟中县| 延长县| 舒城县| 沛县| 通许县| 神农架林区| 金秀| 定兴县| 子洲县| 海门市| 宁城县| 闽清县| 额尔古纳市| 奉节县| 雅安市| 合水县| 贵德县| 巧家县| 紫金县| 农安县| 精河县| 禹州市| 观塘区| 曲沃县| 建始县| 固阳县| 龙岩市| 吉水县| 吉安县| 法库县| 浦东新区| 黄骅市| 城固县| 阜阳市| 伊宁市| 沁阳市| 卢氏县| 津南区| 永安市| 东台市|