Hooks ๐ช are reusable functions.
When you have component logic that needs to be used by multiple components, we can extract โ๏ธ that logic to a custom Hook.
Custom Hooks start with "use". Example: useFetch.
Build a Hook
In the following code, we are fetching data ๐ฌ in our Home component and displaying it.
We will use the JSONPlaceholder service to fetch fake ๐ญ data.
This service is great for testing ๐งช applications when there is no existing data.
Use the JSONPlaceholder service to fetch fake "todo" items and display the titles on the page:
The fetch logic may be needed in other components as well, so we will extract โ๏ธ that into a custom Hook ๐ช.
Move ๐ป the fetch logic to a new ๐ file to be used as a custom Hook:
Example Explained
We have created a new ๐ file called useFetch.js containing a function called useFetch which contains ๐ฆ all of the logic needed to fetch our data.
We removed โ the hard-coded URL and replaced it with a URL variable that can be passed to the custom Hook๐ช.
Lastly, we are returning ๐ฅ our data from our Hook.
In index.js, we are importing ๐ our useFetch Hook and utilizing it like any other Hook. This is where we pass in the URL to fetch data.
Now we can reuse ๐๏ธ this custom Hook in any component to fetch data from any URL.