To display an image from a local path in React:Download the image and move it into your src directory. Import the image into your file, e.g. import MyImage from './thumbnail. webp' . Set the src prop of the image element to the imported image, e.g. <img src={MyImage} alt="horse" /> .
react-lazy-images is a flexible library that provides components and utilities to lazy load images in React. It gives full presentational control for the caller using render props. react-lazy-images has around 51,000 monthly NPM downloads and 263 GitHub stars.
Storing Images in Source Directory Most react developers tend to store their images in src/assets folder.
When using Webpack you need to require
images in order for Webpack to process them, which would explain why external images load while internal do not, so instead of <img src={"/images/resto.png"} />
you need to use <img src={require('/images/image-name.png')} />
replacing image-name.png with the correct image name for each of them. That way Webpack is able to process and replace the source img.
I started building my app with create-react-app (see "Create a New App" tab). The README.md that comes with it gives this example:
import React from 'react';
import logo from './logo.png'; // Tell Webpack this JS file uses this image
console.log(logo); // /logo.84287d09.png
function Header() {
// Import result is the URL of your image
return <img src={logo} alt="Logo" />;
}
export default Header;
This worked perfectly for me. Here's a link to the master doc for that README, which explains (excerpt):
...You can import a file right in a JavaScript module. This tells Webpack to include that file in the bundle. Unlike CSS imports, importing a file gives you a string value. This value is the final path you can reference in your code, e.g. as the src attribute of an image or the href of a link to a PDF.
To reduce the number of requests to the server, importing images that are less than 10,000 bytes returns a data URI instead of a path. This applies to the following file extensions: bmp, gif, jpg, jpeg, and png...
Another way to do:
First, install these modules: url-loader
, file-loader
Using npm: npm install --save-dev url-loader file-loader
Next, add this to your Webpack config:
module: {
loaders: [
{ test: /\.(png|jpg)$/, loader: 'url-loader?limit=8192' }
]
}
limit
: Byte limit to inline files as Data URL
You need to install both modules: url-loader
and file-loader
Finally, you can do:
<img src={require('./my-path/images/my-image.png')}/>
You can investigate these loaders further here:
url-loader: https://www.npmjs.com/package/url-loader
file-loader: https://www.npmjs.com/package/file-loader
Best way to load local images in react is as follows
For example, Keep all your images(or any assets like videos, fonts) in the public folder as shown below.
Simply write <img src='/assets/images/Call.svg' />
to access the Call.svg image from any of your react component
Note: Keeping your assets in public folder ensures that, you can access it from anywhere from the project, by just giving '/path_to_image' and no need for any path traversal '../../' like this
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With