Tepki useRef
Kancası
Kanca , useRef
işlemeler arasında değerleri kalıcı hale getirmenize olanak tanır.
Güncellendiğinde yeniden işlemeye neden olmayan değiştirilebilir bir değeri saklamak için kullanılabilir.
Bir DOM öğesine doğrudan erişmek için kullanılabilir.
Yeniden oluşturmalara neden olmaz
Uygulamamızın Hook'u kullanarak kaç kez render ettiğini saymaya çalışırsak useState
, bu Hook'un kendisi yeniden render işlemine neden olduğu için sonsuz bir döngüye yakalanırdık.
Bunu önlemek için useRef
Hook'u kullanabiliriz.
Örnek:
useRef
Uygulama işlemelerini izlemek için kullanın .
import { useState, useEffect, useRef } from "react";
import ReactDOM from "react-dom";
function App() {
const [inputValue, setInputValue] = useState("");
const count = useRef(0);
useEffect(() => {
count.current = count.current + 1;
});
return (
<>
<input
type="text"
value={inputValue}
onChange={(e) => setInputValue(e.target.value)}
/>
<h1>Render Count: {count.current}</h1>
</>
);
}
ReactDOM.render(<App />, document.getElementById('root'));
useRef()
yalnızca bir öğe döndürür. adlı bir Object döndürür current
.
Başlattığımızda useRef
, başlangıç değerini ayarladık: useRef(0)
.
Bunu yapmak gibi: const count = {current: 0}
. kullanarak sayıma ulaşabiliriz count.current
.
Bunu bilgisayarınızda çalıştırın ve uygulama oluşturma sayısının artışını görmek için girişi yazmayı deneyin.
Sertikalı olmak!
95 $ KAYIT
DOM Öğelerine Erişim
Genel olarak, React'in tüm DOM manipülasyonunu yönetmesine izin vermek istiyoruz.
useRef
Ancak sorunlara neden olmadan kullanılabilecek bazı durumlar vardır .
ref
React'te, bir öğeye doğrudan DOM'den erişmek için bir nitelik ekleyebiliriz .
Örnek:
useRef
Girişe odaklanmak için kullanın :
import { useRef } from "react";
import ReactDOM from "react-dom";
function App() {
const inputElement = useRef();
const focusInput = () => {
inputElement.current.focus();
};
return (
<>
<input type="text" ref={inputElement} />
<button onClick={focusInput}>Focus Input</button>
</>
);
}
ReactDOM.render(<App />, document.getElementById('root'));
Durum Değişikliklerini İzleme
Kanca , useRef
önceki durum değerlerinin kaydını tutmak için de kullanılabilir.
Bunun nedeni, oluşturmalar useRef
arasında değerleri kalıcı hale getirebilmemizdir.
Örnek:
useRef
Önceki durum değerlerini takip etmek için kullanın :
import { useState, useEffect, useRef } from "react";
import ReactDOM from "react-dom";
function App() {
const [inputValue, setInputValue] = useState("");
const previousInputValue = useRef("");
useEffect(() => {
previousInputValue.current = inputValue;
}, [inputValue]);
return (
<>
<input
type="text"
value={inputValue}
onChange={(e) => setInputValue(e.target.value)}
/>
<h2>Current Value: {inputValue}</h2>
<h2>Previous Value: {previousInputValue.current}</h2>
</>
);
}
ReactDOM.render(<App />, document.getElementById('root'));
Bu sefer önceki durumu takip etmek için useState
, useEffect
ve kombinasyonunu kullanıyoruz.useRef
içinde , giriş alanına metin girerek her useEffect
güncellendiğinde useRef
mevcut değeri güncelliyoruz.inputValue