React useEffect Hook

An introduction on how to use useEffect Hook in your React application

Wednesday, November 10, 2021

ripple effect

What is a useEffect Hook?

TL;DR

React useEffect is an alternative to the "old" class lifecycle methods/hooks. It is used to manage side effects, such as network requests or run a piece of code when the component is mounted, updated, or unmounted.

Longer version

Before React v16.8, we can only enable a component to react to state changes using lifecycle methods.

How to define a useEffect


Here's a quick explanation of the above code:

  1. We can declare an effect by calling either React.useEffect or useEffect.
  2. effect is the function that will be called when the component is mounted. OR when the dependency array changes.
  3. cleanup is the function called when the effect is "unmounted".
  4. dependency array is the array of values passed as a second argument to the effect function.
    • If there is no dependency array, the effect will be called every time the component is mounted.
    • If the array is empty, the effect will be called only once when the component is mounted.
    • If the array is not empty, the effect will be called every time the component is mounted and the dependency array changes.

Examples


Increment a counter every second until it reaches 10



Basic fetch from an API



Fetching with loading indicator + error handling - then/catch/finally



Fetching with loading indicator + error handling - async/await



Store a value in localStorage everytime the key or value changes



OR mimic a class lifecycle method

Check this blog on how to convert a class lifecycle methods to useEffect hooks


Additional Note

  • useEffect can only be used in functional components
  • The order of useEffect declarations is important.
  • useEffect in a custom hook is a great way to promote side effect reusability. I will discuss this in another blog.

Conclusion

Compared to the old lifecycle methods, useEffect is much more powerful and flexible, making it an ideal choice when managing a side-effect.