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

react中的useImperativeHandle()和forwardRef()用法

 更新時(shí)間:2022年08月08日 09:40:20   作者:我們都是檸檬精誒  
這篇文章主要介紹了react中的useImperativeHandle()和forwardRef()用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

一、useImperativeHandle()

useImperativeHandle(ref, createHandle, [deps])

useImperativeHandle 可以讓你在使用 ref 時(shí)自定義暴露給父組件的實(shí)例值。在大多數(shù)情況下,應(yīng)當(dāng)避免使用 ref

這樣的命令式代碼。 useImperativeHandle 應(yīng)當(dāng)與 forwardRef 一起使用。

function FancyInput(props, ref) {
? const inputRef = useRef();
? useImperativeHandle(ref, () => ({
? ? focus: () => {
? ? ? inputRef.current.focus();
? ? }
? }));
? return <input ref={inputRef} ... />;
}
FancyInput = forwardRef(FancyInput);

在本例中,渲染 的父組件可以調(diào)用 inputRef.current.focus()。

二、forwardRef()

React.forwardRef 會(huì)創(chuàng)建一個(gè)React組件,這個(gè)組件能夠?qū)⑵浣邮艿?ref 屬性轉(zhuǎn)發(fā)到其組件樹(shù)下的另一個(gè)組件中。

這種技術(shù)并不常見(jiàn),但在以下兩種場(chǎng)景中特別有用:

(1)轉(zhuǎn)發(fā) refs 到 DOM 組件

(2)在高階組件中轉(zhuǎn)發(fā) refs

React.forwardRef 接受渲染函數(shù)作為參數(shù)。React 將使用 props 和 ref 作為參數(shù)來(lái)調(diào)用此函數(shù)。此函數(shù)應(yīng)返回 React 節(jié)點(diǎn)。 FancyButton 使用 React.forwardRef 來(lái)獲取傳遞給它的 ref,然后轉(zhuǎn)發(fā)到它渲染的 DOM button。這樣,使用 FancyButton 的組件可以獲取底層 DOM 節(jié)點(diǎn) button 的 ref,并在必要時(shí)訪問(wèn),就像其直接使用 DOM button 一樣。

const FancyButton = React.forwardRef((props, ref) => ( ? // Step:3
? <button ref={ref} className="FancyButton"> ? ?// Step:4
? ? ? {props.children}
? </button>
));
const ref = React.createRef(); // Step:1
<FancyButton ref={ref}>Click me!</FancyButton>; // Step:2

在上述的示例中,React 會(huì)將 <FancyButton ref={ref}> 元素的 ref 作為第二個(gè)參數(shù)傳遞給 React.forwardRef 函數(shù)中的渲染函數(shù)。該渲染函數(shù)會(huì)將 ref 傳遞給 <button ref={ref}> 元素。 因此,當(dāng)React 附加了 ref 屬性之后,ref.current 將直接指向 <button> DOM 元素實(shí)例。 欲了解更多相關(guān)信息,請(qǐng)參閱官檔 refs 轉(zhuǎn)發(fā)。

以下是對(duì)上述示例發(fā)生情況的逐步解釋:(轉(zhuǎn)發(fā) refs 到 DOM 組件)

  • 我們通過(guò)調(diào)用 React.createRef 創(chuàng)建了一個(gè) React ref 并將其賦值給 ref 變量。
  • 我們通過(guò)指定 ref 為JSX 屬性,將其向下傳遞給 <FancyButton ref={ref}>。
  • React 傳遞 ref 給 forwardRef 內(nèi)函數(shù) (props, ref) => ...,作為其第二個(gè)參數(shù)。
  • 我們向下轉(zhuǎn)發(fā)該 ref 參數(shù)到 <button ref={ref}>,將其指定為 JSX 屬性。
  • 當(dāng) ref 掛載完成,ref.current 將指向 <button> DOM 節(jié)點(diǎn)。

三、案例

父組件

1、注冊(cè)

2、定義

3、觸發(fā)

子組件

1、暴露子組件方法,將 forwardRef 接受的 ref 屬性轉(zhuǎn)發(fā)到其組件樹(shù)下的另一個(gè)組件中

(1)

(2)

(3)父組件

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 關(guān)于React中使用window.print()出現(xiàn)頁(yè)面無(wú)響應(yīng)問(wèn)題解決記錄

    關(guān)于React中使用window.print()出現(xiàn)頁(yè)面無(wú)響應(yīng)問(wèn)題解決記錄

    這篇文章主要介紹了React中使用window.print()出現(xiàn)頁(yè)面無(wú)響應(yīng)問(wèn)題解決記錄,首先問(wèn)題原因可能是操作了document但是并未進(jìn)行銷毀(可能是),具體問(wèn)題解決思路參考下本文吧
    2021-11-11
  • React中實(shí)現(xiàn)使用條件渲染來(lái)顯示不同的內(nèi)容

    React中實(shí)現(xiàn)使用條件渲染來(lái)顯示不同的內(nèi)容

    在React中,條件渲染是根據(jù)不同的條件選擇性地渲染組件,本文介紹了三種常見(jiàn)的條件渲染方式:使用if語(yǔ)句、使用三元運(yùn)算符和使用短路運(yùn)算符,通過(guò)這些方法,我們可以根據(jù)應(yīng)用的狀態(tài)和用戶的操作動(dòng)態(tài)地顯示不同的內(nèi)容,從而提升用戶體驗(yàn)和組件的可維護(hù)性
    2025-02-02
  • react頁(yè)面中存在多個(gè)input時(shí)巧妙設(shè)置value屬性方式

    react頁(yè)面中存在多個(gè)input時(shí)巧妙設(shè)置value屬性方式

    這篇文章主要介紹了react頁(yè)面中存在多個(gè)input時(shí)巧妙設(shè)置value屬性方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 詳解如何在React中優(yōu)雅的使用addEventListener

    詳解如何在React中優(yōu)雅的使用addEventListener

    這篇文章主要為大家詳細(xì)介紹了如何在React中優(yōu)雅的使用addEventListener,文中的示例代碼簡(jiǎn)潔易懂,對(duì)大家學(xué)習(xí)React有一定的幫助,需要的可以參考一下
    2023-01-01
  • 路由react-router-dom的基本使用教程

    路由react-router-dom的基本使用教程

    在React中,路由是一套映射規(guī)則,是URL路徑與組件的對(duì)應(yīng)關(guān)系。使用React路由,就是配置路徑和組件的對(duì)應(yīng)關(guān)系,這篇文章主要介紹了路由react-router-dom的使用,需要的朋友可以參考下
    2023-02-02
  • React狀態(tài)管理中的循環(huán)更新陷阱與解決方案

    React狀態(tài)管理中的循環(huán)更新陷阱與解決方案

    在前端開(kāi)發(fā)中,我們經(jīng)常遇到這樣的場(chǎng)景:需要根據(jù)初始數(shù)據(jù)自動(dòng)回顯UI狀態(tài),但數(shù)據(jù)需要分批異步加載,這時(shí)容易陷入一個(gè)經(jīng)典的狀態(tài)同步循環(huán)陷阱,所以本文給大家介紹了,React 狀態(tài)管理中的循環(huán)更新陷阱與解決方案,需要的朋友可以參考下
    2025-10-10
  • 關(guān)于react hook useState連續(xù)更新對(duì)象的問(wèn)題

    關(guān)于react hook useState連續(xù)更新對(duì)象的問(wèn)題

    這篇文章主要介紹了關(guān)于react hook useState連續(xù)更新對(duì)象的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • React jsx轉(zhuǎn)換與createElement使用超詳細(xì)講解

    React jsx轉(zhuǎn)換與createElement使用超詳細(xì)講解

    這篇文章主要介紹了React jsx轉(zhuǎn)換與createElement使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-11-11
  • React this.setState方法使用原理分析介紹

    React this.setState方法使用原理分析介紹

    我們知道,在React中沒(méi)有像Vue那種數(shù)據(jù)雙向綁定的效果。而this.setState方法就是用來(lái)對(duì)數(shù)據(jù)進(jìn)行更改的。而通過(guò)this.setState方法更改的數(shù)據(jù),會(huì)讓組件的render重新渲染,并且刷新數(shù)據(jù)
    2022-09-09
  • react Input組件Compositionstart和Compositionend事件

    react Input組件Compositionstart和Compositionend事件

    這篇文章主要為大家介紹了Compositionstart和Compositionend事件之于react組件庫(kù)Input組件的坑解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11

最新評(píng)論

东乌珠穆沁旗| 洮南市| 清涧县| 茌平县| 南木林县| 长垣县| 惠水县| 延边| 辽中县| 平陆县| 余干县| 瓦房店市| 南乐县| 西乌珠穆沁旗| 吉水县| 邹城市| 大新县| 芜湖市| 浦东新区| 东乌珠穆沁旗| 即墨市| 绥滨县| 玛多县| 庄浪县| 平塘县| 铁岭县| 德昌县| 伊金霍洛旗| 绍兴市| 邯郸县| 宁南县| 宜丰县| 昭苏县| 云浮市| 社会| 绥阳县| 武鸣县| 承德县| 东阿县| 禄丰县| 当涂县|