1.0.1 • Published 5 years ago
react-native-scroll-lazy v1.0.1
react-native-scroll-lazy
react-native-scroll-lazy is a very high-performance large list contain images for React-Native
Installation
npm install react-native-scroll-lazy or yarn add react-native-scroll-lazy
Components
| Component | Description |
|---|---|
| LazyloadScrollView | A lazyload container component based on ScrollView |
| LazyloadView | Based on View component. This component`s content won`t be rendered util it scrolls into sight. It should be inside a LazyloadScrollView which has the same name prop as this component`s host prop. |
Usage
- Using
LazyloadScrollViewinstead ofScrollView, and specify a unique id fornameprop. - Layout the views which will be lazyloaded by using
LazyloadViewinstead ofView. - Specify
hostprop for everyLazyloadView, thehostprop should be same as outerLazyloadScrollViewcomponent`s name prop. - Using
eventShowViewinLazyloadViewto listening event change show/hide view. - Using
eventChangeHeightinLazyloadViewto get init height view.
Important
Should not change the height of the LazyloadView after it has rendered, this will lead to lazy loading false
Example
import React, { Component } from 'react-native';
import { LazyloadScrollView, LazyloadView } from 'react-native-scroll-lazy';
const Data = [{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}]
class LazyloadScrollViewExample extends Component{
render() {
return (
<LazyloadScrollView style={{ flex: 1 }} name="lazyload-list">
<View style={{ flexDirection: 'row' }}>
<View flex={1}>
{Data.map((file, i) =>
(<LazyloadView
eventShowView={(is_show, id) => {/* TODO */}}
eventChangeHeight={(height)=>{ /* TODO */}}
key={i}
host="lazyload-list"
style={{ height: 200, backgroundColor: '#99ccff', marginHorizontal: 5, marginTop: 5, borderRadius: 5 }}
>
{/* children*/}
</LazyloadView>))
}
</View>
<View flex={1}>
{Data.map((file, i) =>
(<LazyloadView
eventShowView={(is_show, id) => {/* TODO */}}
eventChangeHeight={(height)=>{ /* TODO */}}
key={i}
host="lazyload-list"
style={{ height: 200, backgroundColor: '#99ccff', marginHorizontal: 5, marginTop: 5, borderRadius: 5 }}
>
{/* children*/}
</LazyloadView>))
}
</View>
</View>
</LazyloadScrollView>);
}
}