Now Good bye to useState and useEffect

Ramkumar Khubchandani
2 min readSep 21, 2023

--

Are you feeling bored to write useState and useEffect for just to getting data on component did mount ?

If yes then you are on right blog because here we will remove complete dependencies of useState and useEffect just for data fetching.

This will boast your performance like a rocket.

Please see below steps very carefully we will do this mericle with the help of react-router-dom v6.

Using useLoaderData to make an API call before component mount

The useLoaderData hook in React Router allows you to fetch data from a server before your component mounts. This can be useful for situations where you need to display data to the user as soon as the component loads, such as a list of products on an e-commerce site or a user's profile information.

To use useLoaderData to make an API call before component mount, you can follow these steps:

  1. Create a loader function that makes the API call and returns the data.
  2. In your component, use the useLoaderData hook to fetch the data from the loader function.
  3. Render the data in your component.

Example:

import { useLoaderData } from "react-router-dom";

const loader = async () => {
// Make the API call here.
const data = await fetch("/api/products").then((response) => response.json());
return data;
};

const ProductsList = () => {
const { products } = useLoaderData(loader);

return (
<ul>
{products.map((product) => (
<li key={product.id}>{product.name}</li>
))}
</ul>
);
};

In this example, the loader function makes an API call to fetch a list of products. The ProductsList component then uses the useLoaderData hook to fetch the data from the loader function and render it in a list.

Since the useLoaderData hook fetches the data before the component mounts, there is no need to use useState or useEffect to make the API call. This can help to simplify your code and improve performance.

Benefits of using useLoaderData

There are several benefits to using useLoaderData to make API calls:

  • Improved performance: useLoaderData fetches the data before the component mounts, which can improve the initial render time of your component.
  • Simplified code: useLoaderData removes the need to use useState or useEffect to make the API call, which can make your code simpler and easier to maintain.
  • Better control over data fetching: useLoaderData gives you more control over when and how the data is fetched. For example, you can use it to fetch data from different sources depending on the route or to cache the data for improved performance.

Conclusion

The useLoaderData hook is a powerful tool for fetching data from a server before your component mounts. It can be used to improve performance, simplify your code, and give you more control over data fetching.

ref: https://reactrouter.com/en/main/hooks/use-loader-data

https://github.com/remix-run/react-router/blob/main/packages/react-router/lib/hooks.tsx#L852

Do you want to learn more like this ?

Follow or Message me on linkedin

--

--

Ramkumar Khubchandani
Ramkumar Khubchandani

Written by Ramkumar Khubchandani

Frontend Developer|Technical Content Writer|React|Angular|React-Native|Corporate Trainer|JavaScript|Trainer|Teacher| Mobile: 7709330265|ramkumarkhub@gmail.com

No responses yet