UNPKG

react-native-masonry-scrollview

Version:

A React Native Masonry ScrollView that extends the inbuilt ScrollView component

152 lines (103 loc) 4.15 kB
<h1 align="center"> 🧱 React Native Masonry ScrollView </h1> <div align="center"> Simple easy to use Masonry ScrollView for React Native that extends the original ScrollView [![Version][version-badge]][package] [![Downloads][downloads-badge]][npmtrends] <!-- [![Build Status][build-badge]][build] [![Code Coverage][coverage-badge]][coverage] --> [![Star on GitHub][github-star-badge]][github-star] [![Watch on GitHub][github-watch-badge]][github-watch] [![Twitter Follow][twitter-badge]][twitter] </div> ## Installation ```sh yarn add react-native-masonry-scrollview # or npm i react-native-masonry-scrollview ``` ## Usage The Masonry ScrollView splits the content of the `ScrollView` into multiple columns or rows (depending on horizontal or vertical scroll) and renders the items into the individual column's `View` component. This component is built to extend the existing `ScrollView` component hence all the properties of the `ScrollView` will work with it and it can render any component supplied to it as children. ```jsx import React from "react"; import { View, StyleSheet } from "react-native"; import RNMasonryScroll from "react-native-masonry-scrollview"; const Box = () => <View style={styles.box} />; const App = () => ( <RNMasonryScroll> {/** * Masonry ScrollView only expects children as a list */} {[ <Box key={0} />, <Box key={1} />, <Box key={2} />, <Box key={3} />, <Box key={4} />, <Box key={5} /> ]} </RNMasonryScroll> ); const styles = StyleSheet.create({ box: { height: 50, width: 50, backgroundColor: "red", margin: 16 } }); export default App; ``` ## Advanced Usage Refer the example expo app in `RNMasonryExample/` directory of this repo 👍 ## Properties ### `children: ReactNode[]` Children of the Masonry ScrollView component should always be an array of React Nodes. --- ### `columns?: number` Number of columns to split the Masonry --- ### `columnStyle?: StyleProp<ViewStyle>` Style applied to the `View` component that is wrapping your components inside the Masonry ScrollView. --- ### `oddColumnStyle?: StyleProp<ViewStyle>` Style applied only to the n-th odd columns of the Masonry ScrollView. If you have 3 columns, this style will be applied to columns 1 & 3. --- ### `evenColumnStyle?: StyleProp<ViewStyle>` Style applied only to the n-th even columns of the Masonry ScrollView. If you have 3 columns, this style will be applied to column 2. --- ### `horizontal?: boolean` Control if the masonry is horizontal or vertical --- ### ScrollViewProps All the existing ScrollView Props are supported by this component since it simply extends the actual ScrollView. --- ## Example App The example app is built with expo, you can run the app following the official [expo docs](https://expo.io/learn). <p align="center" > <kbd> <img src="./assets/vertical.gif" style="height: 480px" title="Vertical Masonry" float="left"> </kbd> <kbd> <img src="./assets/horizontal.gif" style="height: 480px" title="Horizontal Masonry" float="right"> </kbd> <br> <em>From the Example App</em> </p> ## Licenses MIT © [DaniAkash][twitter] <!-- [build-badge]: [build]: [coverage-badge]: [coverage]: --> [downloads-badge]: https://img.shields.io/npm/dm/react-native-masonry-scrollview.svg?style=flat-square [npmtrends]: http://www.npmtrends.com/react-native-masonry-scrollview [package]: https://www.npmjs.com/package/react-native-masonry-scrollview [version-badge]: https://img.shields.io/npm/v/react-native-masonry-scrollview.svg?style=flat-square [twitter]: https://twitter.com/dani_akash_ [twitter-badge]: https://img.shields.io/twitter/follow/dani_akash_?style=social [github-watch-badge]: https://img.shields.io/github/watchers/DaniAkash/react-native-masonry-scrollview.svg?style=social [github-watch]: https://github.com/DaniAkash/react-native-masonry-scrollview/watchers [github-star-badge]: https://img.shields.io/github/stars/DaniAkash/react-native-masonry-scrollview.svg?style=social [github-star]: https://github.com/DaniAkash/react-native-masonry-scrollview/stargazers