Skip to content

React 中取得 DOM 實體的方法

tags: React

這篇是相對應於 Vue 3 setup 中取得 DOM 實體的方法
前端很常會需要取得 DOM 元素,在不同框架中會有不同的方式,
因為正在學習 React 中,便把它記錄下來

useRef

  • useRef 是 React 中的一個 Hook,用於建立一個可變的引用對象(可以把它當成容器)
  • 這個對象有一個 .current 屬性,可以用來存任何值
  • 它會存在於整個元件的生命週期中,修改 .current 的值不會引發組件的重新渲染

使用方法

jsx
import React, { useRef } from 'react';
const refContainer = useRef(initialValue);

取得 DOM 元素

jsx
import React, { useRef, useEffect } from 'react';

const TextInputWithFocusButton = () => {
  // 建立一個 ref 來存input 的 DOM 元素
  const inputRef = useRef(null);
  
  // 點擊按鈕時聚焦 input
  const focusInput = () => {
    inputRef.current.focus();
  };
  
  // 組件掛載後自動聚焦
  useEffect(() => {
    inputRef.current.focus();
  }, []);
  
  return (
    <>
      <input ref={inputRef} type="text" />
      <button onClick={focusInput}>聚焦輸入框</button>
    </>
  );
}