国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 web前端 js教程 React元件refs有什麼用? react組件refs的作用及其使用詳解

React元件refs有什麼用? react組件refs的作用及其使用詳解

Sep 11, 2018 pm 03:34 PM
react refs

這篇文章主要的解釋了關(guān)於react組件refs的詳解,現(xiàn)在我們來看看正文的內(nèi)容

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

其實,ref的使用不是必須的。即使在其適用的場景中也不是非用不可的,因為使用ref實現(xiàn)的功能同樣可以轉(zhuǎn)化成其他的方法來實現(xiàn)。但是,既然ref有其適用的場景,也就是說ref自有其優(yōu)勢。關(guān)於這一點和ref的適用場景,官方文件中是這樣說的:

在從render 方法中返回UI 結(jié)構(gòu)之後,你可能想衝出React 虛擬DOM 的限制,在render 返回的元件實例上呼叫某些方法。通常來說,這樣做對於應(yīng)用程式中的資料流是不必要的,因為活躍的資料( Reactive data )流總是確保最新的 props 被傳遞到每一個從 render() 輸出的子級中去。然而,仍然有幾個場景使用這種方式是必須的,或者說是有益的:尋找渲染出的元件的DOM標記(可以認為是DOM的識別ID),在一個大型的非React應(yīng)用中使用React元件或者是將你現(xiàn)有的程式碼轉(zhuǎn)換成React。

下面我們來看這樣的一個場景(下面的例子經(jīng)常被用於ref的講解,可見下面描述的場景應(yīng)該是比較經(jīng)典的):透過某個事件使元素的值設(shè)為空字串,然後使該元素獲得焦點。

var App = React.createClass({
??? getInitialState: function() {
????? return {userInput: ''};
??##????? this.setState({userInput: e.target.value});
??? },
??? clearAndFocusInput: function() {
??為空字串
??????????????? //這裡想要達到為焦點?????
??? },
???#????????? value={this.state.userInput}
??????????? onChange={this.handleChange}
????????put type="button"
??????????????????? ? value="Reset And Focus"
?????={this.clearAndFocusInput}
??? ??????????/>
???????

點擊按鈕通知input元素將值設(shè)為空字串,但是還沒有實現(xiàn)使input元素獲得焦點。這實現(xiàn)起來有些困難,因為在render()中傳回的並不是實際的子元件的組合,只是一個特定時間特定實例的描述。這句話感覺挺繞的,其實render回傳的是

虛擬的DOM

,並不是真實的DOM。因此我們不需要僅僅著眼於那些從render()中返回的那些元件。

那說到這,對於我們?nèi)绾螌崿F(xiàn)獲得焦點並沒有太大的幫助。要實現(xiàn)獲得焦點這個功能我們需要藉助ref來實現(xiàn)。上面我們提到過ref的值有兩種類型,一種是字串、一種是回呼函數(shù)。


ref字串上屬性

React支援一個特殊的屬性,你可以將這個屬性加在任何經(jīng)由render()傳回的元件中。這也就是說對render()回傳的元件進行一個標記,可以方便的定位的這個元件實例。這就是ref的作用。

ref的形式如下

要想存取這個實例,可以透過this.refs來存取:

this.refs.myInput

先前版本中,我們可以透過React.findDOMNode(this.refs.myInput)來存取元件的DOM。但現(xiàn)在,已經(jīng)放棄了findDOMNode函數(shù)了,可以直接用this.refs.myInput來存取。 (想看更多就到PHP中文網(wǎng)React參考手冊欄位學習)

#ref回呼函數(shù)

##ref屬性也可以是一個回調(diào)函數(shù)而不是一個名字。?? 這個函數(shù)將要在元件被掛載之後立即執(zhí)行。這個參照的元件將會作為該函數(shù)的參數(shù),這個函數(shù)可以立即使用這個元件參數(shù),當然也可以將其儲存以供日後使用。

其形式也比較簡單:

render: function() {

?? return this._input = c} } /> ;
},
componentDidMount: function() {
?? this._input.focus();
},

或是

render: function() {

??? return (
????? ??????? ref={function(input) {
????();
????????? }
}} />
??? );
},

這裡要注意,當這個參考元件被卸載且這個ref改變的時候,先前的ref的參數(shù)值將為null。這將有效的防止了內(nèi)存的洩漏。所以在上面程式碼中會有if判斷:

if(input != null){

???????? input.focus();

}

上面介紹了ref的使用場景和方法,下面我們就將上面的例子來補充完整,從而實現(xiàn)獲得

焦點的功能

var App = React.createClass({
??? getInitialState: function() {
??????? return {userInput: ''};
???.setState({userInput: e.target.value});
??? },
???clearAndFocusInput: function() {
??????? this.setState({userInput: ''}# // 清除輸入輸入); // 我們希望現(xiàn)在聚焦!
??????? if (this.refs.myText ##??? render: function() {
??????? return (
???????????


????????????? value={this.state.userInput}
????????????????????? ref =」myTextInput”??????
?????????????????????????????? ???????????????????? type="button"
?? ???????????????? onClick={this.clearAndFocusInput }
?????????????#???????????


??????? );
??? }
});
ReactDOM.render(
?? }
});
ReactDOM.render(
?? }
}) #);

在這個範例中,render函數(shù)回傳一個;實例的描述。但是真正的實例透過this.refs。 myTextInput取得。只要渲染回傳的某個子元件有 ref="myTextInput" ,this.refs. myTextInput就會取得正確的實例。

上面就是ref的所有內(nèi)容,更多關(guān)於ref的介紹可以參考Ref to Components。

本篇文章到這就結(jié)束了(想看更多就到PHP中文網(wǎng)
React使用手冊
欄位學習),有問題的可以在下方留言提問。

以上是React元件refs有什麼用? react組件refs的作用及其使用詳解的詳細內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔相應(yīng)的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

React Router使用指南:如何實現(xiàn)前端路由控制 React Router使用指南:如何實現(xiàn)前端路由控制 Sep 29, 2023 pm 05:45 PM

ReactRouter使用指南:如何實現(xiàn)前端路由控制隨著單頁應(yīng)用的流行,前端路由成為了一個不可忽視的重要部分。 ReactRouter作為React生態(tài)系統(tǒng)中最受歡迎的路由庫,提供了豐富的功能和易用的API,使得前端路由的實作變得非常簡單和靈活。本文將介紹ReactRouter的使用方法,並提供一些具體的程式碼範例。安裝ReactRouter首先,我們需要

Java框架與前端React框架的整合 Java框架與前端React框架的整合 Jun 01, 2024 pm 03:16 PM

Java框架與React框架的整合:步驟:設(shè)定後端Java框架。建立專案結(jié)構(gòu)。配置建置工具。建立React應(yīng)用程式。編寫RESTAPI端點。配置通訊機制。實戰(zhàn)案例(SpringBoot+React):Java程式碼:定義RESTfulAPI控制器。 React程式碼:取得並顯示API回傳的資料。

PHP、Vue和React:如何選擇最適合的前端框架? PHP、Vue和React:如何選擇最適合的前端框架? Mar 15, 2024 pm 05:48 PM

PHP、Vue和React:如何選擇最適合的前端框架?隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,前端框架在Web開發(fā)中起著至關(guān)重要的作用。 PHP、Vue和React作為三種代表性的前端框架,每一種都具有其獨特的特徵和優(yōu)勢。在選擇使用哪種前端框架時,開發(fā)人員需要根據(jù)專案需求、團隊技能和個人偏好做出明智的決策。本文將透過比較PHP、Vue和React這三種前端框架的特徵和使

vue.js vs.反應(yīng):特定於項目的考慮因素 vue.js vs.反應(yīng):特定於項目的考慮因素 Apr 09, 2025 am 12:01 AM

Vue.js適合中小型項目和快速迭代,React適用於大型複雜應(yīng)用。 1)Vue.js易於上手,適用於團隊經(jīng)驗不足或項目規(guī)模較小的情況。 2)React的生態(tài)系統(tǒng)更豐富,適合有高性能需求和復雜功能需求的項目。

React與Vue:Netflix使用哪個框架? React與Vue:Netflix使用哪個框架? Apr 14, 2025 am 12:19 AM

NetflixusesAcustomFrameworkcalled“ Gibbon” BuiltonReact,notReactorVuedIrectly.1)TeamSperience:selectBasedonFamiliarity.2)ProjectComplexity:vueforsimplerprojects:reactforforforproproject,reactforforforcompleplexones.3)cocatizationneedneeds:reactoffipicatizationneedneedneedneedneedneeds:reactoffersizationneedneedneedneedneeds:reactoffersizatization needefersmoreflexibleise.4)

React在HTML中的作用:增強用戶體驗 React在HTML中的作用:增強用戶體驗 Apr 09, 2025 am 12:11 AM

React通過JSX與HTML結(jié)合,提升用戶體驗。 1)JSX嵌入HTML,使開發(fā)更直觀。 2)虛擬DOM機制優(yōu)化性能,減少DOM操作。 3)組件化管理UI,提高可維護性。 4)狀態(tài)管理和事件處理增強交互性。

React的生態(tài)系統(tǒng):庫,工具和最佳實踐 React的生態(tài)系統(tǒng):庫,工具和最佳實踐 Apr 18, 2025 am 12:23 AM

React生態(tài)系統(tǒng)包括狀態(tài)管理庫(如Redux)、路由庫(如ReactRouter)、UI組件庫(如Material-UI)、測試工具(如Jest)和構(gòu)建工具(如Webpack)。這些工具協(xié)同工作,幫助開發(fā)者高效開發(fā)和維護應(yīng)用,提高代碼質(zhì)量和開發(fā)效率。

Netflix的前端:React(或VUE)的示例和應(yīng)用 Netflix的前端:React(或VUE)的示例和應(yīng)用 Apr 16, 2025 am 12:08 AM

Netflix使用React作為其前端框架。 1)React的組件化開發(fā)模式和強大生態(tài)系統(tǒng)是Netflix選擇它的主要原因。 2)通過組件化,Netflix將復雜界面拆分成可管理的小塊,如視頻播放器、推薦列表和用戶評論。 3)React的虛擬DOM和組件生命週期優(yōu)化了渲染效率和用戶交互管理。

See all articles