国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

React:高階組件|ref轉(zhuǎn)發(fā)

這篇具有很好參考價值的文章主要介紹了React:高階組件|ref轉(zhuǎn)發(fā)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

高階組件

? ? ? ? 參考文檔:高階組件 – React (reactjs.org)

????????高階組件(Higher-Order Components,簡稱?HOC)是React中用于復(fù)用組件邏輯的一種高級技巧。具體而言:高階組件是參數(shù)為組件,返回值為新組件的函數(shù)。

????????組件是將 props 轉(zhuǎn)換為 UI,而高階組件是將組件轉(zhuǎn)換為另一個組件。

????????HOC 在 React 的第三方庫中很常見,例如 Redux 的?connect?和 Relay 的?createFragmentContainer。

? ? ? ? 此處不再搬運(yùn)高階組件具體如何使用的部分,詳情參考React官網(wǎng)文檔即可。

ref轉(zhuǎn)發(fā):forwardRef

? ? ? ? forwardRef函數(shù)的作用,

forwardRef 允許組件使用 ref 將 DOM 節(jié)點暴露給父組件。

? ? ? ? 簡單講:就是讓子級函數(shù)式組件除了props參數(shù)之外,額外擁有第二個參數(shù)ref;之后就可以在父組件中拿到這個ref,從而去調(diào)用子組件中暴露出來的方法。

import { forwardRef } from 'react';

const MyInput = forwardRef(function MyInput(props, ref) {
  // ...
});

? ? ? ? 然后在父組件中,可以定義ref屬性,來拿到子組件的引用,偽代碼示例如下,

//這里是父組件
export default ()=>{
    const myInputRef = useRef();
    
    //調(diào)用方式:
    //myInputRef.current.doXXX();
    
    return (<MyInput ref={myInputRef}/>);
}

?暴露句柄:useImperativeHandle

? ? ? ? 那么,通過forwardRef轉(zhuǎn)發(fā)給子組件的ref所調(diào)用的具體方法/句柄如何定義呢?

useImperativeHandle 是 React 中的一個 Hook,它能讓你自定義由 ref 暴露出來的句柄。

useImperativeHandle(ref, createHandle, dependencies?)

? ? ? ? 例如:以下代碼就為MyInput組件提供了doSomething句柄,供父組件通過ref來調(diào)用,文章來源地址http://www.zghlxwxcb.cn/news/detail-833815.html

import { forwardRef, useImperativeHandle } from 'react';

const MyInput = forwardRef(function MyInput(props, ref) {
  useImperativeHandle(ref, () => {
    return {
         //向外暴露的句柄
        doSomething:() =>{
                console.log('here is children method!');
                return 'do-something'
      },
    };
  }, []);

  return <input {...props} />;
});

完整示例代碼

子組件:MyInput

import { forwardRef, useImperativeHandle } from 'react';

const MyInput = forwardRef(function MyInput(props, ref) {
  useImperativeHandle(ref, () => {
    return {
         //向外暴露的句柄
        doSomething:() =>{
                console.log('here is children method!');
                return 'do-something'
      },
    };
  }, []);

  return <input {...props} />;
});

父組件

//這里是父組件
export default ()=>{
    const myInputRef = useRef();
    
    //調(diào)用方式:
    //myInputRef.current.doXXX();
    const clickHandler = ()=>{
       myInputRef.current.doSomething(/*params*/); 
    }
    
    return (<>
        <MyInput ref={myInputRef}/>
        <button onClick={clickHandler}>click here</button>
    </>);
}

到了這里,關(guān)于React:高階組件|ref轉(zhuǎn)發(fā)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【React】組件性能優(yōu)化、高階組件

    【React】組件性能優(yōu)化、高階組件

    React更新機(jī)制 ? React在props或state發(fā)生改變時,會調(diào)用React的render方法,會創(chuàng)建一顆不同的樹。 ? React需要基于這兩顆不同的樹之間的差別來判斷如何有效的更新UI: ? ? 如果一棵樹參考另外一棵樹進(jìn)行完全比較更新,那么即使是最先進(jìn)的算法,該算法的復(fù)雜程度為 O(n3),其

    2024年01月23日
    瀏覽(26)
  • React 高階組件(HOC)

    React 高階組件(HOC)

    高階組件不是 React API 的一部分,而是一種用來復(fù)用組件邏輯而衍生出來的一種技術(shù)。 高階組件就是一個函數(shù),且該函數(shù)接受一個組件作為參數(shù),并返回一個新的組件?;旧?,這是從 React 的組成性質(zhì)派生的一種模式,我們稱它們?yōu)椤凹儭苯M件, 因為它們可以接受任何動態(tài)

    2024年02月12日
    瀏覽(16)
  • React的高階組件詳解

    高階組件基本介紹 什么是高階組件呢? 在認(rèn)識高階組價之前, 我們先來回顧一下什么是高階函數(shù)? 相信很多同學(xué)都知道(聽說過?),也用過高階函數(shù) 高階組件和高階函數(shù)它們非常相似的 高階函數(shù)的定義, 至少滿足以下條件之一: 接受一個或多個函數(shù)作為參數(shù); 返回一個新的函數(shù)

    2024年02月01日
    瀏覽(20)
  • react-高階組件

    react-高階組件

    高階組件( Higher-Order Component,HOC )是一個以 組件作為參數(shù) ,返回一個 新組件 的 函數(shù) 。 高階組件最大的特點就是 復(fù)用組件邏輯 高階組件本身并不是 React 的 API,而是React組件的一種設(shè)計模式,一種組件重用的 高級技巧 高階組件是一個 函數(shù) ,接收要包裝的組件,返回增

    2024年02月07日
    瀏覽(26)
  • React - 你使用過高階組件嗎

    React - 你使用過高階組件嗎

    難度級別:初級及以上 ????????????????????????????????提問概率:55%? 高階組件并不能單純的說它是一個函數(shù),或是一個組件,在React中,函數(shù)也可以做為一種組件。而高階組件就是將一個組件做為入?yún)?,被傳入一個函數(shù)或者組件中,經(jīng)過一定的加工處理,最

    2024年04月16日
    瀏覽(20)
  • React 組件的3大屬性: refs

    Refs(引用)是 React 中用于訪問組件中的 DOM 元素或其他 React 組件實例的一種機(jī)制。它們提供了一種途徑,使你可以在React中直接操作和訪問DOM元素,或者在React組件之間進(jìn)行通信。 用途: 焦點的管理、文本的選擇、媒體的播放; 強(qiáng)制觸發(fā)動畫; 繼承三方 DOM 庫; 字符串 R

    2024年02月06日
    瀏覽(17)
  • react通過ref獲取函數(shù)子組件實例方法

    react通過ref獲取函數(shù)子組件實例方法

    在react16之后帶來了hooks之后,確實方便了很多組件開發(fā),也加快了函數(shù)式編程的速度,但是當(dāng)你通過useRef獲取子組件的時候,又恰好子組件是一個函數(shù)組件,那么將會報一個錯誤:報這個錯誤的主要原因是函數(shù)組件沒有實例對象,所以你沒辦法通過ref獲取子組件實例? Warnin

    2024年02月11日
    瀏覽(23)
  • React組件間數(shù)據(jù)傳遞(彈框和高階組件(HOC)特性實現(xiàn))

    React組件間數(shù)據(jù)傳遞(彈框和高階組件(HOC)特性實現(xiàn))

    在現(xiàn)代前端開發(fā)中,React 已經(jīng)成為了最受歡迎的 JavaScript 庫之一。而在復(fù)雜的應(yīng)用中,不同組件之間的數(shù)據(jù)傳遞問題顯得尤為關(guān)鍵。在本文中,我們將探討一種高效的方法,即如何利用彈框和高階組件特性來實現(xiàn) React 組件間的數(shù)據(jù)傳遞。我們將通過一個具體的業(yè)務(wù)場景來深入

    2024年02月11日
    瀏覽(24)
  • JavaScript 框架比較:Angular、React、Vue.js

    在 Web 開發(fā)領(lǐng)域,JavaScript 提供大量技術(shù)??晒┻x擇。其中最典型的三套組合,分別是 MERN、MEAN 和 MEVN。這些首字母相同的選項各自代表不同的技術(shù)加工具組合。為了在這些技術(shù)棧中做出明智選擇,讓我們先從核心組件聊起,再對各自前端框架(React、Angular 和 Vue)進(jìn)行簡化比

    2024年01月20日
    瀏覽(36)
  • 前端react入門day02-React中的事件綁定與組件

    前端react入門day02-React中的事件綁定與組件

    (創(chuàng)作不易,感謝有你,你的支持,就是我前行的最大動力,如果看完對你有幫助,請留下您的足跡) 目錄 React中的事件綁定 React 基礎(chǔ)事件綁定 使用事件對象參數(shù)? 傳遞自定義參數(shù)? 同時傳遞事件對象和自定義參數(shù)? React中的組件? 組件是什么 React組件 useState? 修改狀態(tài)的規(guī)

    2024年02月06日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包