Socket
Socket
Sign inDemoInstall

react-component-lazy-loader

Package Overview
Dependencies
10
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    react-component-lazy-loader

A package which lazily loads it's children components based on viewport visibility of the component. Useful in lazyloading images or any other custom component.


Version published
Weekly downloads
609
increased by81.79%
Maintainers
1
Install size
203 kB
Created
Weekly downloads
 

Readme

Source

React Component Lazy Loader

A simple React component, which lazily loads it's children based on viewport visibility. Uses Intersection Observer API for increased performance, if browser supports it, otherwise fallbacks to an event based system to check for position of component with respect to viewport.

Handles both vertical as well as horizontal LazyLoading of elements.

Installation


npm install react-component-lazy-loader

Usage

Simply wrap the component which you want to lazily load with ReactComponentLazyLoader and based on the props given, the component will start rendering it's children only when they're visible in viewport.


import  ReactComponentLazyLoader  from  'react-component-lazy-loader';

...

...

  

<ReactComponentLazyLoader>

    <YourComponent>

</ReactComponentLazyLoader>

Props

thresholdY

A positive value for thresholdY(default: 0) makes components load sooner, when scrolling vertically in the viewport. Similarly, a negative value for thresholdY will make components load later.


<ReactComponentLazyLoader  thresholdY={200}>

    <img src="...">

</ReactComponentLazyLoader>

In above example, the will render when the component is 200 pixels below the fold. With no threshold value provided, default value is used, in which case the component will get rendered only when it comes above the fold/gets visible in the viewport.

thresholdX

A positive value for thresholdX(default: 0) makes components load sooner, when scrolling horizontally. Similar to thresholdX, a negative value for thresholdX will make components load later.


<ReactComponentLazyLoader  thresholdX={200}>

    <img src="...">

</ReactComponentLazyLoader>

placeholder

Placeholder is rendered until the component's thresholdX/thresholdY value plus viewport size is not reached. Normally which means placeholder gets rendered till the component is above the fold.

Placeholder can be anything - a simple with a default image or any other valid React custom component. Default value for placeholder is any empty

i.e, an empty div will get rendered as a placeholder, until the condition to render the children is not met.


<ReactComponentLazyLoader  thresholdY={200}  placeholder={<img  src='...'/>}>

    <img>

</ReactComponentLazyLoader>

noLazyHorizontalScroll

Prop to prevent lazyloading of components when doing horizontal scroll. Default value for this is false.

callback

A callback function which when passed, will be called once the lazyloading condition is met and actual component gets rendered on screen.


<ReactComponentLazyLoader  
   thresholdY={200}  
   placeholder={<img  src='...'/>}
   callback={() => {// Do something}>
   
    <CustomComponent>

</ReactComponentLazyLoader>

wrapperID

Typically, horizontal scroll is implemented with respect to a parent container and not the body of the document, hence in order to lazyload components on horizontal scroll, an id would need to be set on the parent element, with respect to which horizontal scroll happens. This id would need to be passed as a prop named wrapperID to the ReactComponentLazyLoader, for horizontal lazyloading to work.

Keywords

FAQs

Last updated on 14 Nov 2019

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc