React Hooks revolutionized how we write components, making code more reusable and easier to reason about. However, they come with their own set of best practices and potential pitfalls.
Best Practices
- Always call hooks at the top level of your component or custom hook.
- Use
useEffect
dependencies correctly to avoid infinite loops. - Extract reusable logic into custom hooks.
Common Pitfalls
- Not providing a dependency array to
useEffect
(runs on every render). - Mutating state directly instead of using the setter function.
- Using hooks conditionally (inside if statements or loops).
Example: Custom Hook
import { useState, useEffect } from "react";
function useWindowWidth() {
const [width, setWidth] = useState(window.innerWidth);
useEffect(() => {
const handleResize = () => setWidth(window.innerWidth);
window.addEventListener("resize", handleResize);
return () => window.removeEventListener("resize", handleResize);
}, []);
return width;
}
Conclusion
Hooks are powerful, but require discipline. Follow best practices to write clean, maintainable React code.