- Notifications
You must be signed in to change notification settings - Fork0
🌅 ⚡ Add image lazy loading to your React app with ease
License
robcalcroft/react-use-lazy-load-image
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Add image lazy loading to your React app with ease
react-use-lazy-load-image uses theIntersectionObserver to provide a performant solution to lazy loading images that doesn't involve scroll event listeners. TheIntersectionObserver API is still quite new so older browsers may not support this, however there are some good polyfills available for these use cases.
react-use-lazy-load-image is super light weight so won't add any extra bulk to your app.
As the name suggestsreact-use-lazy-load-image uses React Hooks, so you need to be using React function components to use this library.
- Add a
data-img-srcattribute (you can customise this) to yourimgtags as your main image source - Change the
srcattribute to a placeholder like a small data URL blob - Import and run
useLazyLoadImagein the body of your React function component
Now as your users scroll down the page the images will load just in time.
| Argument name | Default value | Description |
|---|---|---|
| imageAttribute | '[data-img-src]' | The query passed todocument.querySelectorAll to grab all lazy load-able images on the page |
| imageAttributeKey | 'imgSrc' | The camel-cased key to pull thedata-img-src out of the image element |
| rootMargin | '200px 0px' | https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API#Intersection_observer_options |
| threshold | 0.01 | https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API#Intersection_observer_options |
| debug | false | When set totrue some useful messages will get logged to the console |
| dependencies | [] | React useEffect dependency array, used for re-running this logic if the component re-renders and theimg references change (read more about conditionally firing an effect) |
importReactfrom'react';importuseLazyLoadImagefrom'react-use-lazy-load-image';functionApp(){useLazyLoadImageReact();return(<div>Lots of content that means the image is off screen goes here</div><imgsrc="DATA URL"data-img-src="https://link-to-my-image.com/image.png"alt="My image"/>)}
About
🌅 ⚡ Add image lazy loading to your React app with ease
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors2
Uh oh!
There was an error while loading.Please reload this page.