useEffect, useRef, useCallback hooks in React.js
- useEffect:
TheuseEffect
hook is used to perform side effects in functional components. It’s similar to lifecycle methods such ascomponentDidMount
,componentDidUpdate
, andcomponentWillUnmount
in class components. Example:
import React, { useState, useEffect } from 'react';
function Example() {
const [count, setCount] = useState(0);
useEffect(() => {
// This function will run after every render
document.title = `You clicked ${count} times`;
});
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>Increment</button>
</div>
);
}
- useRef:
TheuseRef
hook is used to create a mutable reference that persists across renders. It’s useful for accessing and interacting with DOM elements, as well as storing mutable values that don’t trigger re-renders. Example:
import React, { useRef } from 'react';
function TextInputWithFocusButton() {
const inputRef = useRef(null);
const handleClick = () => {
// Focus on the input element when the button is clicked
inputRef.current.focus();
};
return (
<div>
<input ref={inputRef} type="text" />
<button onClick={handleClick}>Focus Input</button>
</div>
);
}
- useCallback:
TheuseCallback
hook is used to memoize functions, preventing unnecessary re-renders of components that depend on those functions. It’s particularly useful for optimizing performance when passing callbacks to child components. Example:
import React, { useState, useCallback } from 'react';
function ParentComponent() {
const [count, setCount] = useState(0);
// Define a memoized callback function
const handleClick = useCallback(() => {
setCount(count + 1);
}, [count]);
return (
<div>
<p>Count: {count}</p>
<ChildComponent onClick={handleClick} />
</div>
);
}
function ChildComponent({ onClick }) {
return (
<button onClick={onClick}>Increment</button>
);
}
These are just a few examples of how you can use useEffect
, useRef
, and useCallback
hooks in React to handle side effects, manage references, and optimize performance. Each hook serves a specific purpose and can be used to enhance the functionality and efficiency of your React components.