在 React 中,refs 用於直接存取 DOM 元素 並與之互動。雖然 React 通常透過狀態和 props 以聲明式方式管理 DOM,但有時您可能需要直接與 DOM 交互,例如動畫、表單欄位焦點或測量元素尺寸。在這些情況下,refs 提供了一種存取底層 DOM 節點的方法。
A ref (reference 的縮寫)是一個允許你引用 DOM 元素或 React 元件實例的物件。可以在類別元件中使用 React.createRef() 或在函數元件中使用 useRef() 建立 Ref。參考文獻通常用於:
在類別元件中,引用是使用 React.createRef() 建立的。建立的 ref 然後透過 ref 屬性附加到 DOM 元素。
import React, { Component } from 'react'; class MyComponent extends Component { constructor(props) { super(props); // Create a ref to access the input element this.inputRef = React.createRef(); } handleFocus = () => { // Access the DOM node directly and focus the input element this.inputRef.current.focus(); }; render() { return ( <div> <input ref={this.inputRef} type="text" /> <button onClick={this.handleFocus}>Focus Input</button> </div> ); } } export default MyComponent;
在此範例中:
在函數元件中,引用是使用 useRef 鉤子建立的。 useRef 鉤子可讓您建立一個在重新渲染期間持續存在的可變引用物件。
import React, { useRef } from 'react'; const MyComponent = () => { const inputRef = useRef(); const handleFocus = () => { // Access the DOM node directly and focus the input element inputRef.current.focus(); }; return ( <div> <input ref={inputRef} type="text" /> <button onClick={handleFocus}>Focus Input</button> </div> ); }; export default MyComponent;
在此範例中:
Refs 通常用於直接存取和操作 DOM 元素。例如,可以使用 refs 輕鬆完成關注文字輸入或測量元素的大小。
Refs 可讓您管理元素的焦點,例如在元件安裝時或執行特定操作後聚焦於輸入欄位。
import React, { Component } from 'react'; class MyComponent extends Component { constructor(props) { super(props); // Create a ref to access the input element this.inputRef = React.createRef(); } handleFocus = () => { // Access the DOM node directly and focus the input element this.inputRef.current.focus(); }; render() { return ( <div> <input ref={this.inputRef} type="text" /> <button onClick={this.handleFocus}>Focus Input</button> </div> ); } } export default MyComponent;
在此範例中,由於 useEffect 掛鉤和 ref,當元件安裝時,輸入會自動對焦。
Refs 通常用於與第三方函式庫互動或觸發命令式動畫。例如,您可以使用 ref 來控制自訂動畫或與 jQuery 等非 React 函式庫互動。
Refs 還可以用於收集表單數據,而無需將數據儲存在 React 的狀態中,為不需要即時更新的表單提供了一個簡單的替代方案。
使用多個元素時,您可以將參考儲存在物件或陣列中以存取每個元素。
import React, { useRef } from 'react'; const MyComponent = () => { const inputRef = useRef(); const handleFocus = () => { // Access the DOM node directly and focus the input element inputRef.current.focus(); }; return ( <div> <input ref={inputRef} type="text" /> <button onClick={handleFocus}>Focus Input</button> </div> ); }; export default MyComponent;
在此範例中,使用引用陣列管理多個輸入元素,並使用按鈕來聚焦第二個輸入。
refs 提供了一種與 DOM 互動的方式,而 React 中的 state 用於管理影響 UI 渲染的資料。了解何時使用它們非常重要:
React 中的 Refs 是直接存取和操作 DOM 元素的強大功能。它們提供了與 UI 互動的命令式方式,支援聚焦輸入欄位、觸發動畫或與第三方庫整合等操作。
雖然 React 鼓勵使用狀態和 props 的聲明式方法,但當您需要與 DOM 進行更直接的互動時,refs 是一個重要的工具。
以上是理解 React 中的 Refs 和 DOM:存取和操作 DOM 元素的詳細內容。更多資訊請關注PHP中文網其他相關文章!