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

react使用useImperativeHandle示例詳解

 更新時間:2022年09月23日 14:11:36   作者:前端蘭博  
這篇文章主要為大家介紹了react使用useImperativeHandle示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

1.前言

相比大家看到useImperativeHandle會感到十分陌生,但部分開源代碼經(jīng)常會出現(xiàn)它的身影,網(wǎng)上查閱的資料也是含糊不清。經(jīng)過一翻資料查詢,終于摸清了一點,現(xiàn)在分享給各位爺。

2.useImperativeHandle初探

React官網(wǎng)的定義

useImperativeHandle 可以讓你在使用 ref 時自定義暴露給父組件的實例值。

個人理解

官網(wǎng)的話用大白話解析:useImperativeHandle的作用是將子組件的指定元素暴漏給父組件使用。也就是父組件可以訪問到子組件內(nèi)部的特定元素。

3.獲取元素的幾種方式

下面我將逐步介紹獲取元素的方式,進而引出今天的主角useImperativeHandle。

3.1 useRef:獲取組件內(nèi)部元素

import {useRef} from "react"
export default function() {
  //1.
  const ele = useRef()
  //3.獲取元素
  const getElememntP = () => {
    console.log(ele.current)
  }
  return <div >
    <button onClick={()=>getElememntP()}>獲取p元素</button>
    //2.
    <p ref={ref}></p>
  </div>
}

點擊按鈕,我們可以獲取到p元素。上面是useRef獲取元素的方法,先簡單小結下步驟

  • 引入useRef,定義變量
  • 在需要獲取的dom元素上使用ref進行變量綁定
  • 使用變量.current獲取對應元素

3.2 forwardRef:父組件獲取子組件內(nèi)部的一個元素

上面的useRef在函數(shù)組件可以獲取自身組件內(nèi)部的元素,但是如果我們需要在父組件獲取或者操作兒子組件的一個元素,此時forwardRef就隨之出現(xiàn)了。

father.js

import {useRef} from "react"
import Son from "./son"
export default function(){
  const eleP = useRef()
  const getElement = () => {
    console.log(eleP.current)
  }
  return <div>
    <button onClick={()=>getElement()}>點擊獲取子組件的p元素</button>
    <Son ref={eleP}/></div>
}

son.js

import {forwardRef} from "react"
export default forwardRef(function(props,ref){
  return <div >
    <p ref={ref}></p>
  </div>
})

父元素點擊按鈕后,可以獲取到兒子組件的p元素。

forwardRef在父組件獲取兒子組件內(nèi)部一個元素時,操作如下。

  • 父組件按照useRef的規(guī)則綁定到兒子組件上
  • 兒子組件使用forwardRef包裹,并在函數(shù)組件傳遞的參數(shù)接收,第一個參數(shù)porps接收父組件傳遞的數(shù)據(jù),第二個ref接收的就是dom引用
  • 在需要獲取兒子組件的元素上直接綁定ref的值

3.3 useImperativeHandle:父組件可以獲取/操作兒子組件多個元素

經(jīng)過上面層層遞進,終于來到我們今天的主角了,請大聲告訴我她的名字:是usexxxHandle。它可以在父組件內(nèi)部直接獲取兒子組件任意的dom元素對象。

father.js

import {useRef} from "react"
import Son from "./son"
export default function(){
  const eleP = useRef()
  const getElement = () => {
    console.log(eleP.current.ele1.current)
    console.log(eleP.current.ele2.current)
  }
  return <div>
    <button onClick={()=>getElement()}>點擊獲取子組件元素</button>
    <Son ref={eleP}/></div>
}

son.js

import {useRef,forwardRef,useImperativeHandle} from "react"
export default forwardRef(function(props,ref){
  const ele1 = useRef()
  const ele2 = useRef()
  useImperativeHandle(ref,()=>{
    return {ele1,ele2}
  },[])
  return <div >
    <h2 ref={ele1}></h2>
    <h3 ref={ele2}></h3>
  </div>
})

結果

<h2></h2>
<h3></h3>

父組件點擊按鈕后,可以一次性獲取到多個標簽元素,通過useImperativeHandle函數(shù)內(nèi)部返回的對象可以獲取對應的標簽。具體使用直接看例子就行,我列舉下useImperativeHandle的參數(shù)要求吧

useImperativeHandle(ref,()=>{
    return {dom1,dom2}
},[])

第一個參數(shù)是組件的第二個參數(shù)ref 第二個參數(shù)是一個回調(diào)函數(shù),內(nèi)部返回的對象就是拋給父組件的元素對象 第三個參數(shù)是一個依賴數(shù)組,類似useEffect的依賴數(shù)組,如果依賴數(shù)組內(nèi)部傳遞的數(shù)據(jù)發(fā)生改變,就會重新觸發(fā)回調(diào)函數(shù)。

以上就是react使用useImperativeHandle示例詳解的詳細內(nèi)容,更多關于react使用useImperativeHandle的資料請關注腳本之家其它相關文章!

相關文章

  • React Hooks - useContetx和useReducer的使用實例詳解

    React Hooks - useContetx和useReducer的使用實例詳解

    這篇文章主要介紹了React Hooks - useContetx和useReducer的基本使用,本文通過實例代碼給大家講解的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-11-11
  • React中的Hooks進階理解教程

    React中的Hooks進階理解教程

    這篇文章主要介紹了React中的Hooks進階理解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • 五分鐘教你了解一下react路由知識

    五分鐘教你了解一下react路由知識

    本文主要介紹了react路由知識,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • React反向代理與CSS模塊化的使用案例

    React反向代理與CSS模塊化的使用案例

    這篇文章主要介紹了React反向代理與CSS模塊化的使用案例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-02-02
  • React styled-components設置組件屬性的方法

    React styled-components設置組件屬性的方法

    這篇文章主要介紹了styled-components設置組件屬性的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • React降級配置及Ant Design配置詳解

    React降級配置及Ant Design配置詳解

    這篇文章主要介紹了React降級配置及Ant Design配置詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • react函數(shù)組件useState異步,數(shù)據(jù)不能及時獲取到的問題

    react函數(shù)組件useState異步,數(shù)據(jù)不能及時獲取到的問題

    這篇文章主要介紹了react函數(shù)組件useState異步,數(shù)據(jù)不能及時獲取到的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • React開發(fā)進階redux saga使用原理詳解

    React開發(fā)進階redux saga使用原理詳解

    這篇文章主要為大家介紹了React開發(fā)進階redux saga使用原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • 聊一聊我對 React Context 的理解以及應用

    聊一聊我對 React Context 的理解以及應用

    這篇文章主要介紹了聊一聊我對 React Context 的理解以及應用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • React中Ref的作用小結

    React中Ref的作用小結

    本文文章介紹了React中的Ref概念,包括其基礎概念、使用方式,并討論了在React中通過Ref操作DOM值時避免組件不更新的問題,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2024-11-11

最新評論

扶沟县| 基隆市| 深州市| 浠水县| 微博| 临朐县| 罗田县| 吐鲁番市| 嘉义市| 伽师县| 松原市| 镇坪县| 泽州县| 莲花县| 黄石市| 上林县| 荔浦县| 盘山县| 通辽市| 名山县| 将乐县| 什邡市| 石阡县| 忻城县| 东莞市| 光山县| 龙口市| 玛沁县| 北海市| 东乡族自治县| 三江| 名山县| 德令哈市| 胶州市| 富阳市| 福泉市| 资讯 | 通道| 富阳市| 江山市| 鄢陵县|