欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Ref在React中的交叉用法

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

一、首先說明下什么是Ref

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

Ref官網(wǎng)說明:點(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組件中,類似于key */}
         <Test refs={testRef} /> 
    )
}

3、ref在hooks中與類組件一同使用

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

import ReactDom from 'react-dom';

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

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

當(dāng)遇到connect包裹的類組件時(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類組件
    class TestClass extends React.Component {
        render() {
          return (
            <div >
                我是TestClass類組件 測(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類組件 測(cè)試</div>
    return (
        {/* 這里之所以用refs而不用ref作為prop是因?yàn)閞ef會(huì)被react特殊處理,不會(huì)作為props透?jìng)鞯絩eact組件中,類似于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的生命周期問題

    面試官常問React的生命周期問題

    在react面試中,面試官經(jīng)常會(huì)問我們一些關(guān)于react的生命周期問題,今天特此分享本文給大家詳細(xì)介紹下,感興趣的朋友跟隨小編一起看看吧
    2021-08-08
  • React動(dòng)畫實(shí)現(xiàn)方案Framer Motion讓頁(yè)面自己動(dòng)起來

    React動(dòng)畫實(shí)現(xiàn)方案Framer Motion讓頁(yè)面自己動(dòng)起來

    這篇文章主要為大家介紹了React動(dòng)畫實(shí)現(xiàn)方案Framer Motion讓頁(yè)面自己動(dòng)起來,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • ReactHook使用useState更新變量后,如何拿到變量更新后的值

    ReactHook使用useState更新變量后,如何拿到變量更新后的值

    這篇文章主要介紹了ReactHook使用useState更新變量后,如何拿到變量更新后的值問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • react-router實(shí)現(xiàn)按需加載

    react-router實(shí)現(xiàn)按需加載

    本篇文章主要介紹了react-router實(shí)現(xiàn)按需加載,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • React淺析Fragments使用方法

    React淺析Fragments使用方法

    這篇文章主要介紹了React Fragments使用方法,關(guān)于react Fragments,React中一個(gè)常見模式是為一個(gè)組件返回多個(gè)元素。Fragments 可以讓你聚合一個(gè)子元素列表,并且不在DOM中增加額外節(jié)點(diǎn)
    2022-12-12
  • React競(jìng)態(tài)條件Race Condition實(shí)例詳解

    React競(jìng)態(tài)條件Race Condition實(shí)例詳解

    這篇文章主要為大家介紹了React競(jìng)態(tài)條件Race Condition實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • React Native中NavigatorIOS組件的簡(jiǎn)單使用詳解

    React Native中NavigatorIOS組件的簡(jiǎn)單使用詳解

    這篇文章主要介紹了React Native中NavigatorIOS組件的簡(jiǎn)單使用詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • React State狀態(tài)與生命周期的實(shí)現(xiàn)方法

    React State狀態(tài)與生命周期的實(shí)現(xiàn)方法

    這篇文章主要介紹了React State狀態(tài)與生命周期的實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • React之使用useState異步刷新的問題

    React之使用useState異步刷新的問題

    這篇文章主要介紹了React之使用useState異步刷新的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • React Native 集成 ArcGIS 地圖的詳細(xì)過程

    React Native 集成 ArcGIS 地圖的詳細(xì)過程

    ArcGIS官方提供了 JavaScript SDK,也提供了 ArcGIS-Runtime-SDK-iOS,但是并沒有提供 React Native的版本,所以這里使用了 react-native-arcgis-mapview 庫(kù),本文給大家介紹React Native 集成 ArcGIS 地圖的詳細(xì)過程,感興趣的朋友跟隨小編一起看看吧
    2024-06-06

最新評(píng)論