React Tutorials
React ES6
React Hooks
useRef
HookuseRef
Hook lets you press prices between offers.
It can be used to store a variable amount that does not result in a redistribution when updated.
It can be used to access the DOM feature directly.
If we attempt to calculate how often our app is running useState
Hook, we may be caught in an endless loop as this Hook itself creates a redesign.
To avoid this, we can useRef
Hook.
Use useRef
to track application renders.
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()
returns only one item. Returns the so-called current
.
When we initialize useRef
we set the first value: useRef(0)
.
It's like doing this: const count = {current: 0}
. We can access the calculation using count.current
.
Launch this on your computer and try typing input to see the app provide an increase in the number.
Generally, we want to allow React to handle all DOM fraud.
But there are cases where useRef
can be used without causing problems.
In React, we can add a ref
attribute to an item to access it directly in the DOM.
Use useRef
to focus the input:
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'));
useRef
Hook can also be used to keep track of pricing of the previous status.
This is because we are able to insist on useRef
values between offers.
Use useRef
to keep track of previous state values:
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'));
In this case we use a combination of useState
, useEffect
, and useRef
to track the previous status.
In useEffect
, we update the current value of useRef
every time inputValue
is updated by entering text in the input field.