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

詳解React中如何獲取真實(shí)的dom

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

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

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

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

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

import React, { useRef } from 'react';

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

  const focusInput = () => {
    // 通過(guò) ref 訪問(wèn)真實(shí)的 DOM 元素,并給它添加焦點(diǎn)
    inputRef.current.focus();
  };

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

export default MyComponent;

解釋:

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

在這個(gè)例子中,inputRef.current 會(huì)指向 <input> 元素本身,你可以通過(guò)它訪問(wèn) 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 = () => {
    // 通過(guò) ref 訪問(wèn)真實(shí)的 DOM 元素,并給它添加焦點(diǎn)
    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)建一個(gè) ref 對(duì)象,this.inputRef.current 指向 DOM 元素(在此例中是 <input> 元素)。

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

3. 訪問(wèn) DOM 元素的常見(jiàn)用途

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

示例:

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>
  );
}

控制焦點(diǎn):ref 可以用來(lái)控制元素的焦點(diǎn)(如前面的例子),讓用戶能夠交互時(shí)快速導(dǎo)航到特定的輸入框。

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

4. 使用 ref 獲取自定義組件的實(shí)例

除了 DOM 元素,ref 還可以用來(lái)獲取類組件的實(shí)例。

示例:獲取類組件實(shí)例

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 會(huì)指向子組件 MyButton 的實(shí)例,因此你可以直接調(diào)用它的方法(如 clickHandler())。

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

5. 注意事項(xiàng)

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

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

6.總結(jié)

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

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

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

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

相關(guān)文章

  • JavaScript中React 面向組件編程(下)

    JavaScript中React 面向組件編程(下)

    在React面向組件編程中,除了上一章節(jié)的組件實(shí)例的三大核心屬性以外,還有很多重要的內(nèi)容比如:React 的生命周期,受控組件與非受控組件,高階函數(shù)和函數(shù)柯里化的理解等,在本文中會(huì)給大家繼續(xù)講解React 面向組件編程中剩余的內(nèi)容
    2023-03-03
  • 基于Cloud?Studio構(gòu)建React完成點(diǎn)餐H5頁(yè)面(騰訊云?Cloud?Studio?實(shí)戰(zhàn)訓(xùn)練營(yíng))

    基于Cloud?Studio構(gòu)建React完成點(diǎn)餐H5頁(yè)面(騰訊云?Cloud?Studio?實(shí)戰(zhàn)訓(xùn)練營(yíng))

    最近也是有機(jī)會(huì)參與到了騰訊云舉辦的騰訊云Cloud Studio實(shí)戰(zhàn)訓(xùn)練營(yíng),借此了解了騰訊云Cloud?Studio產(chǎn)品,下面就來(lái)使用騰訊云Cloud?Studio做一個(gè)實(shí)戰(zhàn)案例來(lái)深入了解該產(chǎn)品的優(yōu)越性吧,感興趣的朋友跟隨小編一起看看吧
    2023-08-08
  • React配置Redux并結(jié)合本地存儲(chǔ)設(shè)置token方式

    React配置Redux并結(jié)合本地存儲(chǔ)設(shè)置token方式

    這篇文章主要介紹了React配置Redux并結(jié)合本地存儲(chǔ)設(shè)置token方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • React組件封裝中三大核心屬性詳細(xì)介紹

    React組件封裝中三大核心屬性詳細(xì)介紹

    這篇文章主要為大家介紹了React組件實(shí)例三大屬性state props refs使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • react?redux及redux持久化示例詳解

    react?redux及redux持久化示例詳解

    這篇文章主要為大家介紹了react?redux及redux持久化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • React中的ref屬性的使用示例詳解

    React中的ref屬性的使用示例詳解

    React 提供了 refrefref 屬性,讓我們可以引用組件的實(shí)例或者原生 DOM 元素,使用 refrefref,可以在父組件中調(diào)用子組件暴露出來(lái)的方法,或者調(diào)用原生 element 的 API,這篇文章主要介紹了React中的ref屬性的使用,需要的朋友可以參考下
    2023-04-04
  • React源碼分析之useCallback與useMemo及useContext詳解

    React源碼分析之useCallback與useMemo及useContext詳解

    這篇文章主要介紹了React useCallback與useMemo及useContext源碼分析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-11-11
  • react-draggable實(shí)現(xiàn)拖拽功能實(shí)例詳解

    react-draggable實(shí)現(xiàn)拖拽功能實(shí)例詳解

    這篇文章主要給大家介紹了關(guān)于react-draggable實(shí)現(xiàn)拖拽功能的相關(guān)資料,React-Draggable一個(gè)使元素可拖動(dòng)的簡(jiǎn)單組件,文中通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • 詳解React中的todo-list

    詳解React中的todo-list

    這篇文章主要介紹了React中的todo-list的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-07-07
  • react-native 封裝視頻播放器react-native-video的使用

    react-native 封裝視頻播放器react-native-video的使用

    本文主要介紹了react-native 封裝視頻播放器react-native-video的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01

最新評(píng)論