久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > 使用引用響應(yīng)功能組件

使用引用響應(yīng)功能組件

來(lái)源:千鋒教育
發(fā)布人:syq
時(shí)間: 2022-09-21 14:38:00 1663742280

  使用前向引用和使用固定處理的示例.在 React 的典型數(shù)據(jù)流中,道具是父子組件交互的唯一方式,要修改子組件,可以使用新道具重新渲染它。

1

  除了典型的 React 數(shù)據(jù)流之外,在某些情況下(例如,專注于一個(gè) DOM 元素等)為了修改子組件,我們可能需要另一種方式:Ref 方式。引用提供了一種訪問 DOM 節(jié)點(diǎn)或 React 元素的方法。

  *由于本文使用了功能組件,因此我將重點(diǎn)介紹它們。讓我們從第一個(gè)示例開始,以便我們可以更好地理解。

  示例一:對(duì)焦輸入

2


  當(dāng)用戶單擊按鈕時(shí)將光標(biāo)聚焦在輸入上

  假設(shè)我們有一個(gè)輸入字段,我們希望當(dāng)用戶開始鍵入或單擊按鈕時(shí)光標(biāo)聚焦于該字段。僅修改輸入字段更有意義,而不是更改狀態(tài)(通過(guò) props)導(dǎo)致組件重新渲染,這可以通過(guò)創(chuàng)建 ref 來(lái)完成。

  我們可以使用 useRef() 鉤子來(lái)創(chuàng)建一個(gè) ref,該引用返回一個(gè)可變對(duì)象,其當(dāng)前屬性設(shè)置為我們傳遞給鉤子的初始值,并在 DOM 元素<輸入>上使用它:

3

  控制臺(tái).log(輸入引用)

  很簡(jiǎn)單,當(dāng)用戶開始鍵入時(shí),輸入字段是聚焦的,但是由于某種原因,當(dāng)用戶單擊按鈕時(shí),此輸入字段也應(yīng)該具有焦點(diǎn),我們的輸入字段位于名為 InputWrapper 的反應(yīng)子組件中。

  也許我們會(huì)嘗試這樣做:

4

  這行不通,因?yàn)槟J(rèn)情況下,refs只在原生HTML元素中工作,我們不能為React組件提供引用(在我們的例子中是InpinTraapper),并且由于函數(shù)組件沒有實(shí)例,我們也可能不會(huì)在其上使用屬性,這意味著:ref

  常規(guī)函數(shù)或類組件不接收參數(shù),并且 ref 在 props 中也不可用。ref

  因此,我們需要將輸入包裝器傳遞到 forwardRef 中,它接收傳遞給功能組件的 prop 和引用,并返回 JSX。它的元素。

  const InputWrapper = forwardRef((props, ref) => {…})

5

  創(chuàng)建 ref 并將其傳遞給應(yīng)用組件內(nèi)的輸入包裝器

6

應(yīng)用內(nèi)觸發(fā)焦點(diǎn)的按鈕事件處理程序

7

將引用轉(zhuǎn)發(fā)到輸入 DOM 元素

  通過(guò)這樣做,我們告訴 React,這個(gè)組件可以接收一個(gè) ref,而我們的第二個(gè)參數(shù)將是傳入的 ref。 InputWrapperrefforwardRef

  *在類組件上也可以進(jìn)行引用轉(zhuǎn)發(fā)

  示例二:播放/暫停視頻和對(duì)焦輸入

8


  使用使用對(duì)多個(gè)引用使用簡(jiǎn)化處理

  在這個(gè)例子中,我們有一個(gè)視頻播放器和2個(gè)播放/暫停視頻的按鈕,當(dāng)我們點(diǎn)擊播放按鈕時(shí),我們還想聚焦下面的輸入字段,這意味著我們將有多個(gè)引用(視頻,輸入)。

  如何轉(zhuǎn)發(fā)多個(gè)引用?

  第一個(gè)解決方案:我們可以創(chuàng)建 ref 并將它們傳遞到一個(gè)對(duì)象中,然后使用與上面示例中相同的邏輯。

  家長(zhǎng)應(yīng)用程序:

9

  兒童視頻包裝:

10

  第二種解決方案:使用反應(yīng)鉤子useImperativeHandle

  使用反轉(zhuǎn)手處理自定義在使用 ref 時(shí)向父組件公開的實(shí)例值,它應(yīng)該與轉(zhuǎn)發(fā)引用一起使用。

  這聽起來(lái)可能令人困惑,讓我們先更新組件:

  在應(yīng)用程序內(nèi)創(chuàng)建一個(gè)引用并將其傳遞給視頻包裝器:

11

  在視頻包裝器組件中,我們可以確定哪些屬性將使用使用在引用上公開翻譯手柄鉤子(您可以隨意調(diào)用它們:播放視頻,焦點(diǎn)此輸入,暫停Me等)

12

  上面的代碼是什么意思?我們?cè)阢^子內(nèi)添加方法,然后它們將被其父級(jí)公開和使用。useImperative Handle

  如上面的示例所示,我們可以使用鉤子 forwardRef 訪問 React 函數(shù)子組件的基礎(chǔ) DOM 元素,我們可以處理多個(gè)引用,甚至可以通過(guò)將引用傳遞給其子級(jí)來(lái)修改父組件有權(quán)訪問的引用。

  注意:使用ImperativeHandle啟用了命令性代碼,這與 React 的聲明性本質(zhì)背道而馳,這使得它非常獨(dú)特。由于這個(gè)原因,除非絕對(duì)需要,否則通常建議避免這種鉤子。

  您可以查看結(jié)果并在此處嘗試。

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
什么是域控制器?

一、域控制器的定義域控制器是指在Windows Server操作系統(tǒng)中部署Active Directory服務(wù)的服務(wù)器。Active Directory是微軟公司開發(fā)的目錄服務(wù),用...詳情>>

2023-10-15 00:10:28
深度學(xué)習(xí)模型權(quán)重h5、weights、ckpt、pth有什么區(qū)別?

1.來(lái)源框架不同h5格式通常用于Keras和TensorFlow框架,weights用于Darknet框架,ckpt是TensorFlow框架的一種格式,而pth則主要用于PyTorch框架...詳情>>

2023-10-15 00:05:17
大數(shù)據(jù)測(cè)試工程師需要具備哪些技能?

一、理解大數(shù)據(jù)概念大數(shù)據(jù)測(cè)試工程師需要理解大數(shù)據(jù)的基本概念和原理,如分布式存儲(chǔ)、MapReduce、實(shí)時(shí)計(jì)算等。他們還需要了解如何處理大規(guī)模的...詳情>>

2023-10-14 23:43:03
為什么SpringBoot的 jar 可以直接運(yùn)行?

一、JAR文件的結(jié)構(gòu)與執(zhí)行方式Spring Boot的JAR包是Java Archive的縮寫,它是一種壓縮文件格式,可以將Java項(xiàng)目的類文件、資源文件以及依賴庫(kù)等...詳情>>

2023-10-14 23:01:49
站群服務(wù)器是什么?

站群服務(wù)器的含義與用途站群服務(wù)器主要用于支持站群,即由一組相互鏈接的網(wǎng)站組成的群體。這些網(wǎng)站通常由同一組織或個(gè)人擁有,并且經(jīng)常會(huì)互相鏈...詳情>>

2023-10-14 22:46:12
快速通道