danceyoung / react-native-frozenlist

A List that just be composited by more ScrollView supports freezing columns, horizontal or vertical scrolling together.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

React Native FrozenList

A List that just be composited by more ScrollView supports freezing columns, horizontal or vertical scrolling together.

Example running in iOS (captured by GIPHY CAPTURE)

enter image description here

View Hierarchy

enter image description here

Running demo env

  • "react": "16.0.0",
  • "react-native": "0.51.0"

Why using ScrollView

The FlatList or SectionList does not support the method scrollTo, so it does not work well for two List horizotal or vertical scrolling together through pure React-Native code. But ScrollView simply renders all child components at a once, so the FrozenList does not support render items lazily and has a performance downside.

Why iOS only

Because ScrollView on Andorid supports vertical scrolling only.

Features

  • optional ListHeader
  • optional SectionHeader
  • RenderItem
  • vertical scrolling together
  • horizontal scrolling together

Installation

cd your project root direction

$ npm install react-native-frozenlist --save

Usage

code example App.js

import {FrozenList} from 'react-native-frozenlist'

Props

leftList

The prop leftList will rendering a frozen columns.

leftList:{
    listHeader,
    sectionHeader,
    renderItem,
    sections
}
  • listHeader

    Type: function, Required: No

    A element rendered at the top of all items, default is no any style <View/>.

  • sectionHeader

    Type: function, Required: No

    A element rendered and sticked at the top of each section, default is no any style <View/>.

    The function will be passed args with the following keys: section - the full section object as specified in sections sectionIndex - section's index within the sections

  • renderItem

    Type: function, Required: Yes

    A element rendered for every item in every section. You can over-ride on a per-section basis.

    The function will be passed args with the following keys:

    section - the full section object as specified in sections

    sectionIndex - section's index within the sections

    item - the item object as specified in this section's data key

    itemIndex - item's index within this section's data

  • sections

    Type: array, Required: Yes

    The actual data to render.Per section contains data for rendering items in this section, like the following

    sections:[{data:[]},{data:[]}]

rightList

The prop rightList will rendering other columns horizontal scrolling.

rightList:{
    listHeader,
    sectionHeader,
    renderItem,
    sections,
    contentContainerWidth
}

The props listHeader, sectionHeader, renderItem, sections akin to the corresponding props in leftList

  • contentContainerWidth

    Type: number, Required: Yes

Ensure all child views within contentContainer are wraped and visible while horizontal scrolling.

Licensed

react-native-frozenlist is MIT Licensed

About

A List that just be composited by more ScrollView supports freezing columns, horizontal or vertical scrolling together.

License:MIT License


Languages

Language:JavaScript 74.0%Language:Objective-C 14.4%Language:Python 6.4%Language:Java 5.3%