Altcademy - a Forbes magazine logo Best Coding Bootcamp 2023

How to get image from url in ReactJS

Demystifying Image Fetching in ReactJS

Let’s kick off by picturing this: You're building a web app, and you want to display an image from a URL. It's like putting up a picture frame in your room, but instead of a physical photo, you're using a link from the internet. That's what we're going to learn today, fetching an image from a URL in ReactJS.

Setting Up

Before we start, ReactJS is like our toolbox, and we need to have it ready. If you've already set it up, feel free to skip this part. However, if you're still new, you can set up a new React application by using Create React App, a tool that sets up a new React application with a single command.

npx create-react-app image-fetch-app

This is like preparing your canvas before starting your masterpiece.

Creating an Image Component

In the world of ReactJS, we can create things called "components". Think of these like Lego blocks that can be reused and put together to build a bigger structure. Here, we're going to create an Image component. This component will be responsible for fetching and displaying an image from a URL.

Let's start by defining a new component in a file named Image.js.

import React from 'react';

const Image = (props) => {
  return (
    <img src={props.url} alt={props.description} />
  );
}

export default Image;

We're taking two things from props (short for properties) here, url and description. Think of props like the settings or preferences you can give to a component. In this case, url is the link to the image we want to display, and description is a short text that describes the image.

Using the Image Component

Now that we have our Image component, we can use it in another component. Imagine you're building with Lego again, and now you want to use the block (our Image component) you've just created.

Let's create a new component named App in a file named App.js.

import React from 'react';
import Image from './Image';

const App = () => {
  const imageUrl = 'https://example.com/image.jpg';
  const imageDescription = 'A sample image';

  return (
    <div>
      <h1>My Image Fetching App</h1>
      <Image url={imageUrl} description={imageDescription} />
    </div>
  );
}

export default App;

Here, we're using the Image component inside the App component. We're giving the Image component the url and description props.

Fetching Images Dynamically

What if you want to fetch an image from a URL dynamically? It's like changing the photo in your picture frame from time to time. To do this, we can use a feature in React called "state".

Think of "state" as the memory of a component. It remembers things and can change over time, like our memory.

Let's modify our App component to fetch an image URL from an API. We'll use the fetch function in JavaScript, which is like a messenger that can get data from a server.

import React, { useState, useEffect } from 'react';
import Image from './Image';

const App = () => {
  const [imageUrl, setImageUrl] = useState(null);
  const imageDescription = 'A dynamically fetched image';

  useEffect(() => {
    fetch('https://api.example.com/random-image')
      .then(response => response.json())
      .then(data => setImageUrl(data.url));
  }, []);

  return (
    <div>
      <h1>My Image Fetching App</h1>
      {imageUrl && <Image url={imageUrl} description={imageDescription} />}
    </div>
  );
}

export default App;

Here, we're using useState to create a state for the image URL, and useEffect to fetch the image URL when the component is first displayed on the screen.

Conclusion: ReactJS Magic in Action

And voila! You've just learned how to fetch an image from a URL in ReactJS. It's like you've just learned a new magic trick. You've seen how easy it is to build, use, and reuse components like Lego blocks. You've seen how state allows components to remember things and change over time, like our memory. And you've seen how the fetch function can act as a messenger to get data from a server.

The next time you want to display an image from a URL in a React app, remember this magic trick. Happy coding!