Custom Hooks
Subject: React
๐ What Are Custom Hooks?
A Custom Hook is a JavaScript function that starts with use and calls other hooks (like useState, useEffect, etc.).
They let you reuse stateful logic across components โ making your code cleaner, modular, and easier to maintain.
๐ฏ Why Use Custom Hooks?
Problem:
You keep duplicating the same state logic in multiple components.
โ Solution:
Extract that logic into a custom, reusable hook and use it wherever needed.
โ When to Use a Custom Hook
| Use Case | Reason to Use a Custom Hook | 
|---|---|
| Repeated use of useEffect | Abstract side effects like data fetching | 
| Shared useState logic | Reuse input/toggle logic | 
| Complex logic (timers etc.) | Clean up component code | 
| Working with APIs/storage | Encapsulation and reusability | 
๐งฑ Custom Hook Rules
- Must start with 
use - Can call other hooks (
useState,useEffect, etc.) - Cannot be called inside loops, conditions, or nested functions
 - Must follow normal React Hook Rules
 
โ
 Basic Custom Hook Example: useCounter
๐ง useCounter.js
๐งช Usage in Component
โ Custom Hook with useEffect: Fetch API
๐ง useFetch.js
๐งช Usage in Component
๐ง Benefits of Custom Hooks
| Benefit | Description | 
|---|---|
| โป๏ธ Reusability | Use the same logic in multiple components | 
| ๐งผ Cleaner Code | Keeps component logic short and focused | 
| ๐งช Testability | Hooks are just functions โ easy to unit test | 
| ๐ Composability | Custom hooks can call other custom hooks | 
๐ฆ More Examples of Custom Hooks
| Custom Hook | Description | 
|---|---|
useToggle() | Toggle a boolean value | 
useLocalStorage() | Sync state with localStorage | 
useDebounce() | Debounce fast-changing input values | 
useWindowSize() | Track window width & height | 
usePrevious() | Get the previous value of a prop/state | 
๐ Summary Table
| Concept | Description | 
|---|---|
| What is it? | A reusable function that uses other React Hooks | 
| Naming | Must start with use | 
| Return values | Typically returns an object with logic or state | 
| Hook rules | Same as normal hooks โ no conditional or loop calls | 
| Benefits | Cleaner, reusable, composable, testable code | 
๐ง Real-Life Analogy
A custom hook is like a power tool ๐ ๏ธ โ once built, you can plug it in and reuse it in any project to speed up your workflow and reduce manual effort.
Advertisement Slot 1
Advertisement Slot 2