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

詳解Ref在React中的交叉用法

 更新時(shí)間:2021年06月19日 17:16:12   作者:其野風(fēng)  
眾所周知,react推出了hooks之后,很多項(xiàng)目就開(kāi)始往hooks上靠攏,所以也就出現(xiàn)了class和hooks交叉使用的項(xiàng)目。這個(gè)時(shí)候使用ref需要注意一些東西

一、首先說(shuō)明下什么是Ref

Ref 轉(zhuǎn)發(fā)是一項(xiàng)將 ref 自動(dòng)地通過(guò)組件傳遞到其一子組件的技巧。對(duì)于大多數(shù)應(yīng)用中的組件來(lái)說(shuō),這通常不是必需的。但其對(duì)某些組件,尤其是可重用的組件庫(kù)是很有用的

Ref官網(wǎng)說(shuō)明:點(diǎn)擊這里

二、ref在hooks中的用法

1、ref在hooks中HTMLDom的用法

這里就如官網(wǎng)一樣正常使用即可,官網(wǎng)例子:這里

const Fn = ()=>{
    const testRef = useRef(null);
    console.log('testRef',testRef.current); // 會(huì)渲染兩次,第一次打印null,第二次是<div>測(cè)試</div>
    return (
        <div ref={testRef}>測(cè)試</div>
    )
}

2、ref在hooks中與函數(shù)式組件的用法

這里只需要將ref屬性透?jìng)鞯胶瘮?shù)式組件中即可

const Fn = ()=>{
    const testRef = useRef(null);
    // 定義Test函數(shù)組件
    const Test = ({ refs }) => <div ref={refs}>我是ReactDOM test</div>;
    console.log('testRef',testRef.current); // 會(huì)渲染兩次,第一次打印null,第二次是<div>我是ReactDOM test</div>
    return (
        {/* 這里之所以用refs而不用ref作為prop是因?yàn)閞ef會(huì)被react特殊處理,不會(huì)作為props透?jìng)鞯絩eact組件中,類(lèi)似于key */}
         <Test refs={testRef} /> 
    )
}

3、ref在hooks中與類(lèi)組件一同使用

這里僅需要在類(lèi)組件的回調(diào)ref中手動(dòng)賦值給useRef對(duì)象即可,更多回調(diào)ref:這里

import ReactDom from 'react-dom';

const Fn = ()=>{
    const testClassRef = useRef(null);
    // 定義TestClass類(lèi)組件
    class TestClass extends React.Component {
        render() {
          return (
            <div >
                我是TestClass類(lèi)組件 測(cè)試
            </div>
          )
        }
    }
    console.log('testClassRef',testClassRef.current); // 會(huì)渲染兩次,第一次打印null,第二次是<div>我是TestClass類(lèi)組件 測(cè)試</div>
    return (
        {/* 這里之所以用refs而不用ref作為prop是因?yàn)閞ef會(huì)被react特殊處理,不會(huì)作為props透?jìng)鞯絩eact組件中,類(lèi)似于key */}
         <TestClass 
             ref={el => {
                console.log('new render refs')
                testClassRef.current = ReactDom.findDOMNode(el);
             }} 
         /> 
    )
}

4、ref在hooks中與class、react-redux一同使用

當(dāng)遇到connect包裹的類(lèi)組件時(shí),因?yàn)樽钔鈱右呀?jīng)被包裹成了react-redux的Provider,所以需要將ref屬性透?jìng)魅缯嬲齊eact組件中,這個(gè)時(shí)候需要關(guān)注下connect的forwardRef屬性

import ReactDom from 'react-dom';
import { connect } from 'react-redux';

const Fn = ()=>{
    const testClassRef = useRef(null);
    // 定義TestClass類(lèi)組件
    class TestClass extends React.Component {
        render() {
          return (
            <div >
                我是TestClass類(lèi)組件 測(cè)試
            </div>
          )
        }
    }
    //定義TestClass的connect包裹后的組件
    //forwardRef:true 設(shè)置redux允許將ref作為props傳入到connect包裹的組件中
    const TestClassConnect = connect(null, null, null, { forwardRef: true })(TestClass);
    
    console.log('testClassRef',testClassRef.current); // 會(huì)渲染兩次,第一次打印null,第二次是<div>我是TestClass類(lèi)組件 測(cè)試</div>
    return (
        {/* 這里之所以用refs而不用ref作為prop是因?yàn)閞ef會(huì)被react特殊處理,不會(huì)作為props透?jìng)鞯絩eact組件中,類(lèi)似于key */}
         <TestClassConnect
            ref={el => {
              console.log('new render refs')
              testClassRef.current = ReactDom.findDOMNode(el);
            }}
          />
    )
}

以上就是詳解Ref在React中的交叉用法的詳細(xì)內(nèi)容,更多關(guān)于Ref在React中的交叉用法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • React 遠(yuǎn)程動(dòng)態(tài)組件實(shí)踐示例詳解

    React 遠(yuǎn)程動(dòng)態(tài)組件實(shí)踐示例詳解

    這篇文章主要為大家介紹了React 遠(yuǎn)程動(dòng)態(tài)組件實(shí)踐示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • react+antd樹(shù)選擇下拉框中增加搜索框

    react+antd樹(shù)選擇下拉框中增加搜索框

    這篇文章主要介紹了react+antd樹(shù)選擇下拉框中增加搜索框方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 使用React制作一個(gè)貪吃蛇游戲的代碼詳解

    使用React制作一個(gè)貪吃蛇游戲的代碼詳解

    Snake?Game?使用?ReactJS?項(xiàng)目實(shí)現(xiàn)功能組件并相應(yīng)地管理狀態(tài),開(kāi)發(fā)的游戲允許用戶使用箭頭鍵控制蛇或觸摸屏幕上顯示的按鈕來(lái)收集食物并增長(zhǎng)長(zhǎng)度,本文給大家詳細(xì)講解了如何使用?React?制作一個(gè)貪吃蛇游戲,需要的朋友可以參考下
    2023-11-11
  • React?Hydrate原理源碼解析

    React?Hydrate原理源碼解析

    這篇文章主要為大家介紹了React?Hydrate原理源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • React的Props、生命周期詳解

    React的Props、生命周期詳解

    “Props” 是 React 中用于傳遞數(shù)據(jù)給組件的一種機(jī)制,通常作為組件的參數(shù)進(jìn)行傳遞,在 React 中,props 是只讀的,意味著一旦將數(shù)據(jù)傳遞給組件的 props,組件就不能直接修改這些 props 的值,這篇文章主要介紹了React的Props、生命周期,需要的朋友可以參考下
    2024-06-06
  • react如何實(shí)現(xiàn)篩選條件組件

    react如何實(shí)現(xiàn)篩選條件組件

    這篇文章主要介紹了react如何實(shí)現(xiàn)篩選條件組件問(wèn)題,具有很好的參考價(jià)價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 淺談React + Webpack 構(gòu)建打包優(yōu)化

    淺談React + Webpack 構(gòu)建打包優(yōu)化

    本篇文章主要介紹了淺談React + Webpack 構(gòu)建打包優(yōu)化,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • React使用context進(jìn)行跨級(jí)組件數(shù)據(jù)傳遞

    React使用context進(jìn)行跨級(jí)組件數(shù)據(jù)傳遞

    這篇文章給大家介紹了React使用context進(jìn)行跨級(jí)組件數(shù)據(jù)傳遞的方法步驟,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)React context組件數(shù)據(jù)傳遞有一定的幫助,感興趣的小伙伴跟著小編一起來(lái)學(xué)習(xí)吧
    2024-01-01
  • 用React實(shí)現(xiàn)一個(gè)類(lèi) chatGPT 的交互式問(wèn)答組件的方法詳解

    用React實(shí)現(xiàn)一個(gè)類(lèi) chatGPT 的交互式問(wèn)答組件的方法詳解

    這篇文章主要給大家詳細(xì)介紹如何用React實(shí)現(xiàn)一個(gè)類(lèi) chatGPT 的交互式問(wèn)答組件的方法,文中有詳細(xì)的代碼示例,對(duì)我們學(xué)習(xí)有一定的幫助,需要的朋友可以參考下
    2023-06-06
  • React中使用UMEditor的方法示例

    React中使用UMEditor的方法示例

    這篇文章主要介紹了React中使用UMEditor的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12

最新評(píng)論

大洼县| 修水县| 霞浦县| 卢氏县| 酉阳| 荣成市| 南华县| 东海县| 邛崃市| 平顶山市| 都兰县| 宁明县| 江安县| 隆回县| 南平市| 嘉定区| 霍城县| 旬邑县| 荔波县| 三门县| 靖边县| 临海市| 盐山县| 红安县| 永仁县| 高邮市| 德格县| 右玉县| 武汉市| 尖扎县| 平阳县| 山阳县| 青冈县| 绵竹市| 运城市| 景德镇市| 大关县| 塔城市| 青田县| 都兰县| 杭锦旗|