ReactJS and images in public folder

JavascriptReactjs

Javascript Problem Overview


Im new in ReactJS and I want to import images in a component. These images are inside of the public folder and I do not know how to access the folder from the react component.

Any ideas ?

EDIT

I want to import an image inside Bottom.js or Header.js

The structure folder is:

enter image description here

I do not use webpack. Should I ?

Edit 2

I want to use webpack for loading the images and the rest of assets. So in my config folder I have the next files:

enter image description here

Where I need to add the paths of the images and how?

Thanks

Javascript Solutions


Solution 1 - Javascript

You don't need any webpack configuration for this..

In your component just give image path. By default react will know its in public directory.

<img src="/image.jpg" alt="image" />

Solution 2 - Javascript

To reference images in public there are two ways I know how to do it straight forward. One is like above from Homam Bahrani.

using

    <img src={process.env.PUBLIC_URL + '/yourPathHere.jpg'} /> 

And since this works you really don't need anything else but, this also works...

    <img src={window.location.origin + '/yourPathHere.jpg'} />

Solution 3 - Javascript

the react docs explain this nicely in the documentation, you have to use process.env.PUBLIC_URL with images placed in the public folder. See here for more info

return <img src={process.env.PUBLIC_URL + '/img/logo.png'} />;

Solution 4 - Javascript

1- It's good if you use webpack for configurations but you can simply use image path and react will find out that that it's in public directory.

<img src="/image.jpg">

2- If you want to use webpack which is a standard practice in React. You can use these rules in your webpack.config.dev.js file.

module: {
  rules: [
    {
      test: /\.(jpe?g|gif|png|svg)$/i,
      use: [
        {
          loader: 'url-loader',
          options: {
            limit: 10000
          }
        }
      ]
    }
  ],
},

then you can import image file in react components and use it.

import image from '../../public/images/logofooter.png'

<img src={image}/>

Solution 5 - Javascript

Create a folder in public ex.Assets and put your image in that folder and assign the folder_name / image_name in src

<img src = "/Assets/cardimg.svg" alt="Card image cap" width="400" />

Solution 6 - Javascript

We know React is SPA. Everything is rendered from the root component by expanding to appropriate HTML from JSX.

So it does not matter where you want to use the images. Best practice is to use an absolute path (with reference to public). Do not worry about relative paths.

In your case, this should work everywhere:

"./images/logofooter.png"

Solution 7 - Javascript

You should use webpack here to make your life easier. Add below rule in your config:

const srcPath = path.join(__dirname, '..', 'publicfolder')

const rules = []

const includePaths = [
  srcPath
]
    // handle images
    rules.push({
      test: /\.(png|gif|jpe?g|svg|ico)$/,
      include: includePaths,
      use: [{
        loader: 'file-loader',
        options: {
          name: 'images/[name]-[hash].[ext]'
        }
      }

After this, you can simply import the images into your react components:

import myImage from 'publicfolder/images/Image1.png'

Use myImage like below:

<div><img src={myImage}/></div>

or if the image is imported into local state of component

<div><img src={this.state.myImage}/></div> 

Solution 8 - Javascript

Simply Use

<img src='/image.extension' />

React will automatically point toward the public directory

Solution 9 - Javascript

here is sure and three simple way to do that...

  1. you can make one folder in directory and access it as we do import way or

  2. you can give direct image name in src

    <img src="image__name" alt="yourpic" /> 
    

//by default react look in public folder can render image in img tag

  1. const image = window.location.origin + "/image.png"; 
    

// if your image in public directory inside folder imagecollection than you can import it in this way

  const image = window.location.origin + "/imagecollection /image.png";
 <img src={image} alt="yourpic" />

Solution 10 - Javascript

Try This One its easy and Simple

  1. Don't Make Image folder in src.
  2. Make an image folder in public.
  3. you work in react-bootstrap install

> npm install react-bootstrap > > > import React from 'react'; >
> import 'bootstrap/dist/css/bootstrap.min.css'; > import { Image } from 'react-bootstrap'; > export default function Main() { >
> return ( > <> > bg image > > ) > }

Hope it's Done

Solution 11 - Javascript

A simple solution is to use paths like this /images/logoFooter.png. If the file is located directly under the public folder, do /someImage.png. You can go deeper, /x/y/z/image.png. Treat the locating part of the image as an absolute kind of location for that image.

For more information, check out https://create-react-app.dev/docs/using-the-public-folder/.

Solution 12 - Javascript

You Could also use this.. it works assuming 'yourimage.jpg' is in your public folder.

<img src={'./yourimage.jpg'}/>

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAceconhieloView Question on Stackoverflow
Solution 1 - JavascriptBimal GrgView Answer on Stackoverflow
Solution 2 - JavascriptGerardView Answer on Stackoverflow
Solution 3 - JavascriptHom BahraniView Answer on Stackoverflow
Solution 4 - JavascriptHassan AjazView Answer on Stackoverflow
Solution 5 - JavascriptVikram Singh ShekhawatView Answer on Stackoverflow
Solution 6 - JavascriptKarthik SagarView Answer on Stackoverflow
Solution 7 - JavascriptUmeshView Answer on Stackoverflow
Solution 8 - JavascriptSandeep RanaView Answer on Stackoverflow
Solution 9 - JavascriptvibhuView Answer on Stackoverflow
Solution 10 - JavascriptSarthak RavalView Answer on Stackoverflow
Solution 11 - JavascriptSaif Ul IslamView Answer on Stackoverflow
Solution 12 - JavascriptsmoothVibesView Answer on Stackoverflow