
Complete Guide to React Hooks: Master All Hooks with Examples
function Counter() { const [count, setCount] = useState(0); return ( <div> Count: {count} <button onClick={() => setCount(count + 1)}>Increment</button> <button onClick={() => setCount(count - 1)}>Decrement</button> <button onClick={() => setCount(0)}>Reset</button> </div> ); }</code></pre>
<h3>Multiple State Variables</h3> <pre><code class="jsx">function Form() { const [name, setName] = useState(''); const [email, setEmail] = useState(''); const [age, setAge] = useState(0); return ( <div> <input value={name} onChange={e => setName(e.target.value)} /> <input value={email} onChange={e => setEmail(e.target.value)} /> <input value={age} onChange={e => setAge(Number(e.target.value))} /> </div> ); }</code></pre> <h3>Object State</h3> <pre><code class="jsx">function UserProfile() { const [user, setUser] = useState({ name: 'John', age: 25, email: 'john@example.com' });// ❌ Bad: Mutating state directly const updateNameBad = () => { user.name = 'Jane'; // Wrong! setUser(user); };
// ✅ Good: Creating new object const updateNameGood = () => { setUser({ ...user, name: 'Jane' }); };
// ✅ Good: Using callback form const updateAge = () => { setUser(prev => ({ ...prev, age: prev.age + 1 })); };
return ( <div> <p>{user.name}</p> <p>Age: {user.age}</p> <p>Email: {user.email}</p> <button onClick={updateNameGood}>Update Name</button> <button onClick={updateAge}>Increment Age</button> </div> ); }</code></pre>
<h3>Array State</h3> <pre><code class="jsx">function TodoList() { const [todos, setTodos] = useState([]); const [input, setInput] = useState('');// Add item const addTodo = () => { setTodos([...todos, { id: Date.now(), text: input, completed: false }]); setInput(''); };
// Remove item const removeTodo = (id) => { setTodos(todos.filter(todo => todo.id !== id)); };
// Update item const toggleTodo = (id) => { setTodos(todos.map(todo => todo.id === id ? { ...todo, completed: !todo.completed } : todo )); };
return ( <div> <input value={input} onChange={e => setInput(e.target.value)} /> <button onClick={addTodo}>Add Todo</button> <ul> {todos.map(todo => ( <li key={todo.id}> <input type="checkbox" checked={todo.completed} onChange={() => toggleTodo(todo.id)} /> {todo.text} <button onClick={() => removeTodo(todo.id)}>Delete</button> </li> ))} </ul> </div> ); }</code></pre>
<hr /> <!-- The rest of the sections would continue similarly: 3. useEffect - Side Effects 4. useContext - Context API ... 15. Custom Hooks - Building Reusable Logic --> <!-- For brevity, these are omitted in this snippet but the pattern above applies --> <hr /> <h2>Conclusion</h2> <p>React Hooks have transformed how we build React applications. By mastering these Hooks, you can:</p> <ul> <li>Write cleaner, more maintainable code</li> <li>Share logic between components easily</li> <li>Optimize performance effectively</li> <li>Build complex applications with simple patterns</li> </ul> <h3>Key Takeaways</h3> <ol> <li><code>useState</code> - For component state</li> <li><code>useEffect</code> - For side effects and lifecycle</li> <li><code>useContext</code> - For consuming context</li> <li><code>useReducer</code> - For complex state logic</li> <li><code>useCallback</code>/<code>useMemo</code> - For performance optimization</li> <li><code>useRef</code> - For DOM access and mutable values</li> <li>Custom Hooks - For reusable logic</li> </ol> <h3>Related Resources</h3> <ul> <li><a href="https://react.dev/reference/react" target="_blank" rel="noopener noreferrer">React Official Hooks Documentation</a></li> <li><a href="https://react.dev/reference/react/hooks" target="_blank" rel="noopener noreferrer">React Hooks API Reference</a></li> <li><a href="https://github.com/rehooks/awesome-react-hooks" target="_blank" rel="noopener noreferrer">Awesome React Hooks</a></li> </ul> </body> </html>