JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 5
  • Score
    100M100P100Q49716F
  • License MIT

React Lazy Load Component for your Website Performance

Package Exports

  • react-dom-lazyload-component
  • react-dom-lazyload-component/dist/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (react-dom-lazyload-component) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

react-dom-lazyload-component

npm version

Install

npm i react-dom-lazyload-component

or

yarn add react-dom-lazyload-component

Usage

import React from 'react';
import ReactDOM from 'react-dom';
import LazyLoad from 'react-dom-lazyload-component';
import { Header, Main, Loading } from './MyComponents';

const Footer = React.lazy(() => import('./MyComponents'))

const App = () => (
    <>
        <Header />
        <Main />
        {/* Footer is not needed to be rendered first. */}
        {/* This will optimize Core Web Vitals */}
        <LazyLoad
          as='footer'
          fallback={<Loading />}
          direction='vertical'
          margin='200px'
          suspense
        >
          <Footer />
        </LazyLoad>
    </>
)

ReactDOM.render(<App />, document.body);

Props

LazyLoad

Name Required Type Default Description
children Yes ReactNode - Component is rendered when it is in the viewport. Automatically enable React.Suspense if you use React.lazy .
fallback No ReactNode null Component is rendered when it is not in the viewport.
rootId No string - The id of element which is IntersectionObserver's target. If rootId is not specified, then the bounds of the actual document viewport are used. This prop wraps IntersectionObserver.root because of performance.
direction No 'vertical' | 'horizontal' 'vertical' Direction which user will scroll.
margin No string '0px' Margin around the root. For examples, if direction is vertical and margin is 200px, IntersectionObserver.thresholds is 200px 0px.
forceVisible No boolean false You can forces the component to display regardless of whether the element is visible in the viewport.
once No boolean true You can control whether the element in the viewport is shown at once or not.
onVisible No () => void - Callback function called when the component has been visible.
as No string div You can specify tag name to LazyLoad component.
suspense No boolean false You can use React.Suspense.

LazyLoad also can be received props like className, style and id.

Browser Support

Please see Intersection Observer API.

Demo

https://hiroki0525.github.io/react-dom-lazyload-component/