lazy-load-list
v1.2.4
Published
lazy load list is a lightweight web package that loads items in lazy way to achieve high performance and better UX in large lists.
Downloads
1,507
Maintainers
Readme
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:
Features
- Fast Loading 🚀
- Lightweight package
- Better user experience
- Supports most loved JS frameworks
- Supports SSR & SSG
Demo
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
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 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 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 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
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 js & vue js (just use slot name "loading like this):
<img slot="loading" src="loading.svg" width="16" alt="loading"/>
- react js (use loadingComponent props to pass the element):
..
loadingComponent={loadingElementHere}
/>