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

詳解React中如何獲取真實的dom

 更新時間:2025年02月13日 10:08:56   作者:逆襲的菜鳥X  
這篇文章主要為大家詳細介紹了React中獲取真實的dom的相關(guān)方法,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以跟隨小編一起學習一下

在 React 中,獲取真實的 DOM 元素通常通過 ref 來實現(xiàn)。ref 是一個特殊的屬性,用于引用組件或 DOM 元素的實例。你可以通過 ref 獲取到組件的真實 DOM 元素或組件實例。

1. 函數(shù)組件中的 useRef

在函數(shù)組件中,獲取 DOM 元素的引用需要使用 useRef 鉤子。

示例:函數(shù)組件中的 useRef 用法

import React, { useRef } from 'react';

function MyComponent() {
  // 創(chuàng)建一個 ref 來引用 DOM 元素
  const inputRef = useRef(null);

  const focusInput = () => {
    // 通過 ref 訪問真實的 DOM 元素,并給它添加焦點
    inputRef.current.focus();
  };

  return (
    <div>
      <input ref={inputRef} type="text" />
      <button onClick={focusInput}>Focus the input</button>
    </div>
  );
}

export default MyComponent;

解釋:

useRef 返回一個包含 .current 屬性的對象,current 可以指向真實的 DOM 元素(或者組件實例,具體取決于 ref 的用途)。

在這個例子中,inputRef.current 會指向 <input> 元素本身,你可以通過它訪問 DOM 元素的屬性和方法(例如 focus())。

2. 類組件中的 createRef

在類組件中,獲取 DOM 元素的引用需要使用 React.createRef() 方法。

示例:類組件中的 createRef 用法

import React, { Component } from 'react';

class MyComponent extends Component {
  // 在類組件中創(chuàng)建 ref
  constructor(props) {
    super(props);
    this.inputRef = React.createRef();
  }

  focusInput = () => {
    // 通過 ref 訪問真實的 DOM 元素,并給它添加焦點
    this.inputRef.current.focus();
  };

  render() {
    return (
      <div>
        <input ref={this.inputRef} type="text" />
        <button onClick={this.focusInput}>Focus the input</button>
      </div>
    );
  }
}

export default MyComponent;

解釋:

React.createRef() 用于在類組件中創(chuàng)建一個 ref 對象,this.inputRef.current 指向 DOM 元素(在此例中是 <input> 元素)。

focusInput 方法通過 this.inputRef.current.focus() 調(diào)用 DOM 方法來聚焦輸入框。

3. 訪問 DOM 元素的常見用途

獲取輸入框的值:你可以通過 ref 獲取到輸入框的值,雖然在大多數(shù)情況下,React 推薦使用受控組件來管理輸入框的值,但有時直接訪問 DOM 元素可能更簡單。

示例:

function MyComponent() {
  const inputRef = useRef(null);

  const handleSubmit = () => {
    alert(`Input value: ${inputRef.current.value}`);
  };

  return (
    <div>
      <input ref={inputRef} type="text" />
      <button onClick={handleSubmit}>Submit</button>
    </div>
  );
}

控制焦點:ref 可以用來控制元素的焦點(如前面的例子),讓用戶能夠交互時快速導航到特定的輸入框。

DOM 操作:你還可以直接操作 DOM 元素的其他屬性,如添加事件監(jiān)聽器、獲取元素尺寸、滾動等。

4. 使用 ref 獲取自定義組件的實例

除了 DOM 元素,ref 還可以用來獲取類組件的實例。

示例:獲取類組件實例

import React, { Component } from 'react';

class MyButton extends Component {
  clickHandler() {
    alert('Button clicked!');
  }

  render() {
    return <button onClick={this.clickHandler}>Click Me</button>;
  }
}

class ParentComponent extends Component {
  constructor(props) {
    super(props);
    this.buttonRef = React.createRef();
  }

  triggerButtonClick = () => {
    this.buttonRef.current.clickHandler(); // 調(diào)用子組件的方法
  };

  render() {
    return (
      <div>
        <MyButton ref={this.buttonRef} />
        <button onClick={this.triggerButtonClick}>Trigger Child Button Click</button>
      </div>
    );
  }
}

export default ParentComponent;

解釋:

this.buttonRef.current 會指向子組件 MyButton 的實例,因此你可以直接調(diào)用它的方法(如 clickHandler())。

ref 對于類組件和函數(shù)組件的使用方式略有不同,但它們的核心思想相同:通過 ref 獲取實例或 DOM 元素的引用。

5. 注意事項

避免過度使用 ref:在 React 中,ref 是一種“逃逸機制”,它繞過了 React 的數(shù)據(jù)流和狀態(tài)管理。盡量避免在沒有必要的情況下使用 ref,推薦使用 React 的狀態(tài)和 props 來管理數(shù)據(jù)和交互。

ref 只在渲染完成后有效:ref 只能在組件渲染完成后訪問到 DOM 元素。因此,在 componentDidMount 或 useEffect 中使用 ref 時,要確保渲染已經(jīng)完成。

6.總結(jié)

在 函數(shù)組件 中,使用 useRef 來獲取真實的 DOM 元素。

在 類組件 中,使用 React.createRef() 來獲取真實的 DOM 元素。

ref 用于訪問 DOM 元素或組件實例,可以用于獲取值、控制焦點或執(zhí)行其他 DOM 操作。

到此這篇關(guān)于詳解React中如何獲取真實的dom的文章就介紹到這了,更多相關(guān)React獲取真實dom內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React 小技巧教你如何擺脫hooks依賴煩惱

    React 小技巧教你如何擺脫hooks依賴煩惱

    Hooks 是一種函數(shù),該函數(shù)允許您從函數(shù)式組件 “勾住(hook into)” React 狀態(tài)和生命周期功能。 Hooks 在類內(nèi)部不起作用 - 它們允許你無需類就使用 React,本文帶領大家學習React 小技巧教你如何擺脫hooks依賴煩惱,感興趣的朋友一起看看吧
    2021-05-05
  • react?diff?算法實現(xiàn)思路及原理解析

    react?diff?算法實現(xiàn)思路及原理解析

    這篇文章主要介紹了react?diff?算法實現(xiàn)思路及原理解析,本節(jié)我們正式進入基本面試必考的核心地帶?--?diff?算法,了解如何優(yōu)化和復用?dom?操作的,還有我們常見的?key?的作用,需要的朋友可以參考下
    2022-05-05
  • React避免不必要的重新渲染的方法示例

    React避免不必要的重新渲染的方法示例

    構(gòu)建高性能?React?應用程序的關(guān)鍵之一是避免不必要的重新渲染,React?的渲染引擎是高效的,但防止在不需要的地方重新渲染仍然至關(guān)重要,在這篇文章中,我們將介紹常見錯誤以及如何避免它們,需要的朋友可以參考下
    2024-10-10
  • React Native全面屏狀態(tài)欄和底部導航欄適配教程詳細講解

    React Native全面屏狀態(tài)欄和底部導航欄適配教程詳細講解

    最近在寫 React Native 項目,調(diào)試應用時發(fā)現(xiàn)頂部狀態(tài)欄和底部全面屏手勢指示條區(qū)域不是透明的,看起來很難受。研究了一下這個問題,現(xiàn)在總結(jié)一下解決方案,這篇文章主要介紹了React Native全面屏狀態(tài)欄和底部導航欄適配教程
    2023-01-01
  • React?Hooks中?useRef和useImperativeHandle的使用方式

    React?Hooks中?useRef和useImperativeHandle的使用方式

    這篇文章主要介紹了React?Hooks中?useRef和useImperativeHandle的使用方式,文中說明了useRef和useCallback一起使用,?可以解決閉包陷阱的問題,本文結(jié)合實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-10-10
  • 淺談react useEffect閉包的坑

    淺談react useEffect閉包的坑

    筆者最近用react useEffect閉包,其中踩到了一些坑在此與大家分享一下。需要的朋友們下面隨著小編來一起學習學習吧
    2021-06-06
  • react為什么不推薦使用index作為key

    react為什么不推薦使用index作為key

    本文主要介紹了react為什么不推薦使用index作為key,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • React實現(xiàn)父組件調(diào)用子組件的兩種寫法

    React實現(xiàn)父組件調(diào)用子組件的兩種寫法

    react通信分很多種,比如:父子通信,兄弟通信等等,這里我們就簡單說一下父子通信,父子通信分為:父組件調(diào)用子組件里面的方法;子組件調(diào)用子組件里面的方法,這里我們著重說一下父組件調(diào)用子組件,需要的朋友可以參考下
    2024-04-04
  • 關(guān)于react-router中的Prompt組件使用心得

    關(guān)于react-router中的Prompt組件使用心得

    這篇文章主要介紹了關(guān)于react-router中的Prompt組件學習心得,Prompt組件作用是,在用戶準備離開該頁面時,?彈出提示,?返回true或者false,?如果為true,?則離開頁面,?如果為false,?則停留在該頁面,本文結(jié)合示例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-01-01
  • React+Node.js實現(xiàn)大文件傳輸與斷點續(xù)傳

    React+Node.js實現(xiàn)大文件傳輸與斷點續(xù)傳

    這篇文章主要為大家詳細介紹了如何使用React前端和Node.js后端實現(xiàn)大文件傳輸和斷點續(xù)傳的功能,文中的示例代碼講解詳細,感興趣的小伙伴可以參考下
    2024-12-12

最新評論

桃园县| 灵璧县| 加查县| 许昌市| 康定县| 天柱县| 赫章县| 广汉市| 哈密市| 新竹县| 清新县| 青冈县| 托里县| 大方县| 建阳市| 曲沃县| 论坛| 盐边县| 荆州市| 陵川县| 凤冈县| 汾阳市| 吉首市| 张北县| 大埔县| 沙湾县| 兴和县| 蚌埠市| 弥渡县| 旌德县| 伊吾县| 耿马| 郎溪县| 驻马店市| 铁岭县| 资阳市| 柯坪县| 宕昌县| 五莲县| 东山县| 枣庄市|