Skip to content

⚛️ Minimal zero dependency lazy load images solution with a simple React Hook for all images of an element

License

Notifications You must be signed in to change notification settings

mamal72/react-use-lazy-images

Repository files navigation

NPM Build Status David npm

react-use-lazy-images

Minimal zero dependency lazy load images solution with a simple React Hook for all images of an element.

Note that this package is using Intersection Observer API and won't do anything if this API isn't available on the user's browser.

Installation

Using NPM:

npm i react-use-lazy-images

Using Yarn:

yarn add react-use-lazy-images

Usage

import React from 'react'
import { useLazyImages } from 'react-use-lazy-images'

const STYLES = {
  height: "5000px",
  margin: '0 auto',
  width: '100%'
}

export function OctoCats() {
  const ref = useLazyImages<HTMLDivElement>({
    placeholderSrc:
      "https://octodex.github.com/images/vinyltocat.png"
  });
  return (
    <div ref={ref} style={STYLES}>
      <h1>React Use Lazy Images</h1>
      <img
        alt="Vinyltocat"
        src="https://octodex.github.com/images/surftocat.png"
      />
      <h2>Some Elements Between</h2>
      <h2>Some Elements Between</h2>
      <h2>Some Elements Between</h2>
      <h2>Some Elements Between</h2>
      <h2>Some Elements Between</h2>
      <img
        alt="Surftocat"
        src="https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_92x30dp.png"
      />
      <h2>Some Elements Between</h2>
      <h2>Some Elements Between</h2>
      <h2>Some Elements Between</h2>
      <h2>Some Elements Between</h2>
      <h2>Some Elements Between</h2>
      <img
        alt="Justicetocat"
        src="https://octodex.github.com/images/justicetocat.jpg"
      />
      <h2>Some Elements Between</h2>
      <h2>Some Elements Between</h2>
      <h2>Some Elements Between</h2>
      <h2>Some Elements Between</h2>
      <h2>Some Elements Between</h2>
      <img
        alt="Private Investocat"
        src="https://octodex.github.com/images/privateinvestocat.jpg"
      />
      <h2>Some Elements Between</h2>
      <h2>Some Elements Between</h2>
      <h2>Some Elements Between</h2>
      <h2>Some Elements Between</h2>
      <h2>Some Elements Between</h2>
      <img
        alt="Robotocat"
        src="https://octodex.github.com/images/Robotocat.png"
      />
      <h2>Some Elements Between</h2>
      <h2>Some Elements Between</h2>
      <h2>Some Elements Between</h2>
      <h2>Some Elements Between</h2>
      <h2>Some Elements Between</h2>
      <img
        alt="Spidertocat"
        src="https://octodex.github.com/images/spidertocat.png"
      />
    </div>
  );
}

Contribution

You can report bugs and issues here.

You can also send a PR if you feel like you can improve or fix something. Don't forget to write/update tests for your changes.

About

⚛️ Minimal zero dependency lazy load images solution with a simple React Hook for all images of an element

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published