DEV Community

Mahesh Galange
Mahesh Galange

Posted on

2 1 1 1

Mastering Custom Hooks in React – A Beginner’s Guide 🪝

📌 Table of Contents

  1. What Are Custom Hooks?
  2. Why Use Custom Hooks?
  3. How to Create One – Example
  4. Best Practices & Common Mistakes

🧠 What Are Custom Hooks?

Custom Hooks are JavaScript functions that start with the word use and allow you to extract component logic into reusable functions. They use React’s built-in hooks (like useState, useEffect) under the hood and follow the same rules.

🔍 Why Use Custom Hooks?
Here’s what you gain:

  • ♻️ Reusability: Share logic across multiple components
  • 🧼 Cleaner Code: Keep your components focused on UI
  • 🧩 Composability: Combine multiple hooks into one

💡 How to Create One – Example

Let’s create a custom hook called useLocalStorage.

import { useState, useEffect } from 'react';

function useLocalStorage(key, initialValue) {
  const [value, setValue] = useState(() => {
    const stored = localStorage.getItem(key);
    return stored ? JSON.parse(stored) : initialValue;
  });

  useEffect(() => {
    localStorage.setItem(key, JSON.stringify(value));
  }, [key, value]);

  return [value, setValue];
}
Enter fullscreen mode Exit fullscreen mode

✅ Usage:

function ThemeToggle() {
  const [theme, setTheme] = useLocalStorage('theme', 'light');

  return (
    <button onClick={() => setTheme(theme === 'light' ? 'dark' : 'light')}>
      Switch to {theme === 'light' ? 'dark' : 'light'} mode
    </button>
  );
}

Enter fullscreen mode Exit fullscreen mode

✨ Final Thoughts

That’s a wrap on custom hooks! They’re powerful, reusable, and help keep your code clean and modular. I hope this guide helps you create your own and apply them confidently in your React projects.

This was my first blog—if you liked it or found it helpful, feel free to connect or share your feedback!

JavaScript tools that help you ship faster

JavaScript tools that help you ship faster

Skip boilerplate and focus on features. Kinde handles auth, access control, and billing behind the scenes.

Get a free account

Top comments (0)

Heroku

Tired of jumping between terminals, dashboards, and code?

Check out this demo showcasing how tools like Cursor can connect to Heroku through the MCP, letting you trigger actions like deployments, scaling, or provisioning—all without leaving your editor.

Learn More

👋 Kindness is contagious

Explore this practical breakdown on DEV’s open platform, where developers from every background come together to push boundaries. No matter your experience, your viewpoint enriches the conversation.

Dropping a simple “thank you” or question in the comments goes a long way in supporting authors—your feedback helps ideas evolve.

At DEV, shared discovery drives progress and builds lasting bonds. If this post resonated, a quick nod of appreciation can make all the difference.

Okay