Socket
Socket
Sign inDemoInstall

lazy-load-list

Package Overview
Dependencies
0
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    lazy-load-list

lazy load list is a lightweight web package that loads items in lazy way to achieve high performance and better UX in large lists.


Version published
Weekly downloads
210
decreased by-23.91%
Maintainers
1
Created
Weekly downloads
 

Readme

Source

Lazy Load List

# Stand With Palestine 🇵🇸

Lazy Load List is a lightweight web package that loads items in lazy way to achieve high performance and better UX in large lists.

Rendering large lists makes the first load slow especially if items contain images, so this package split the list to small lists then it renders them one by one when scrolling to the end of the list..

you can notice the deference here:

loading performance deference

Features

  • Fast Loading 🚀
  • Lightweight package
  • Better user experience
  • Supports most loved JS frameworks
  • Supports SSR & SSG

Demo

  • Simple example in Svelte js
  • Simple example in Vue js
  • Simple example in React js

you can find the source code of examples in examples folder

Lazy Load List 1.2 is here 🎉

what's new?

  • support React js
  • auto loading items when container can contain more
  • better performance
  • explain using custom loading element

Supported Frameworks

| svelte logo | Svete js     | ✅
| vue logo | Vue js (2,3) | ✅
| react logo | React js     | ✅

Installation

install the package using npm or yarn:

install using npm

$ npm i lazy-load-list

or using yarn

$ yarn add lazy-load-list

Usage

⚠ you must wrap the list by div and specify the height and width in the wrapper div.

  • svelte logo svelte js:
import LazyList from 'lazy-load-list/svelte'
<div  class="container">
	<LazyList
		data={colors}
		itemsPerRender={15}
		containerClasses="list"
		defaultLoadingColor="#222"
		let:item={item}
	>
		<h1>{ item }</h1>
	</LazyList>
</div>
  • vue logo vue js:
<div class="container">
	<LazyList
		:data="items"
		:itemsPerRender="15"
		containerClasses="list"
		defaultLoadingColor="#222"
	>
		<template v-slot="{item}">
		    <h1>{{ item }}</h1>
		</template>
	</LazyList>
</div>

// script
import LazyList from 'lazy-load-list/vue'
..
components: { LazyList } // don't forget to define it in the components
  • react logo react js:
import  LazyList  from  'lazy-load-list/react'
const renderItem = ({item, index}) => (
	<h1 key={index}>{ item }</h1>
)

<div className="container">
	<LazyList
		data={colors}
		itemsPerRender={15}
		containerClasses="list"
		defaultLoadingColor="#222"
		renderItem={renderItem}
	/>
</div>

Props

propsupported frameworkdescriptionrequiredtypedefault value
dataallthe item arrayyesarray[]
itemsPerRenderallitems to be rendered per loadyesnumber3
containerClassesalllist container classes for CSSnostring''
defaultLoadingallto show the default loading or notnobooltrue
defaultLoadingColorallcolor of the default loading nostring'#18191A'
renderItemReact jselement to be render for each itemyesReact component() => null
loadingComponentReact jscustom loading componentnoReact component() => null

Using custom loading element

you can specify the loading element color using (defaultLoadingColor) prop.. but if you don't like the default loading element, you can use custom one:

  • in svelte logo svelte js & vue logo vue js (just use slot name "loading like this):
<img slot="loading" src="loading.svg" width="16" alt="loading"/>
  • react logo react js (use loadingComponent props to pass the element):
	..
		loadingComponent={loadingElementHere}
	/>

Keywords

FAQs

Last updated on 21 Oct 2023

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