INTRO 🔔
Hello World! 👋
Today we are discussing another custom hook🪝 is useRefs
🔥. It is an extension of useRef
💥. Now we will see the code and how to use it.
USAGE 🔔
As a React
developer🧑🏻💻 , we all know what useRef💥 hook is. useRef
💥 helps to access the DOM elements. One useRef
💥 will help to access one element but sometimes we need to access more than one element 🤔. That time we need to create multiple uesRef
💥 hooks. To avoid this problem we are creating a useRefs
🔥 custom hook.
Note📌 :- As discussed earlier hook useLocal🚀. This is not a hook, it is the helper. But for our convenience, we are calling it a hook🪝.
CODE 🔔
export const useRefs = () => {
const refs = [];
return [refs, (el) => el && refs.push(el)];
};
USE CASE 🔔
TRADITIONAL MULTIPLE useRef
HOOKS 🕯️
import React, { useEffect, useRef } from "react";
function App() {
const headerRef = useRef(null);
const inputRef = useRef(null);
const btnRef = useRef(null);
useEffect(() => {
console.log("header", headerRef.current.innerText);
console.log("input", inputRef.current.defaultValue);
console.log("button", btnRef.current.offsetWidth);
}, []);
return (
<>
<main>
<div id="header" ref={headerRef}>Header</div>
<input type="text" defaultValue={'hello world'} ref={inputRef}/>
<button id="click" ref={btnRef}>Click Here</button>
</main>
</>
);
}
export default App;
USING useRefs
HOOK 💡
import React, { useEffect } from "react";
import { useRefs } from "./useRefs";
function App() {
const [refs, handleRef] = useRefs();
useEffect(() => {
console.log("header", refs[0].innerText);
console.log("input", refs[1].defaultValue);
console.log("button", refs[2].offsetWidth);
}, []);
return (
<>
<main>
<div id="header" ref={handleRef}>Header</div>
<input type="text" defaultValue={"hello world"} ref={handleRef} />
<button id="click" ref={handleRef}>Click Here</button>
</main>
</>
);
}
export default App;
It also gives the same output as using multiple useRef
hooks.
Please practice in your Code Editor, you will get full clarity on this hook.
CONCLUSION 🔔
I hope this hook is helpful. We will meet with another hook in another post.
Peace 🙂
Top comments (0)