DEV Community

Cover image for Are React Hooks just normal javascript functions?
Royal Jain for CodeParrot

Posted on

Are React Hooks just normal javascript functions?

The answer is no, sort of.

React Hook is a special function in React, introduced in React 16.8 to enable state and other React features in functional components without writing a class.

How are they different than a normal javascript function -

Purpose

Hooks are specific to React and are used to hook into React features like state management, lifecycle methods, context, etc., in functional components. They allow you to use state and other React features without writing a class.

Regular functions in JavaScript are general-purpose and are used for a wide range of programming tasks. They don't have any specific connection to React.

React Lifecycle Integration

Hooks like useEffect are designed to tap into React's lifecycle events.

function DataFetcher() {
    const [data, setData] = useState(null);

    // Equivalent to componentDidMount and componentDidUpdate
    useEffect(() => {
        const fetchData = async () => {
            const response = await fetch('https://api.example.com/data');
            const result = await response.json();
            setData(result);
        };

        fetchData();

        // Equivalent to componentWillUnmount
        return () => {
            // Cleanup logic goes here (e.g., aborting a fetch request)
            console.log('Component will unmount and cleanup');
        };
    }, []); // The empty array makes this effect run only on mount and unmount
}
Enter fullscreen mode Exit fullscreen mode

useEffect Hook: Manages the lifecycle events similar to componentDidMount and componentWillUnmount. The empty dependency array [] tells React to run the effect only once after the initial render (like componentDidMount) and on unmount (like componentWillUnmount).The return function in useEffect is a cleanup function that executes when the component is about to unmount, which is similar to componentWillUnmount in class components.

Stateful and Reactive

Hooks like useState are stateful. They maintain state across renders and react to state changes, triggering component re-renders.

Restrictions on Use

Hooks come with rules, Hooks can only be called at the top level of React functional components or custom Hooks. They cannot be called conditionally, in loops, or nested functions. Normal functions don’t have these restrictions.

In summary, while React Hooks are specialized functions designed to work within the React ecosystem, particularly for state management and lifecycle integration in functional components, unlike normal JavaScript functions which are more versatile.

Top comments (0)