An open API service indexing awesome lists of open source software.

https://github.com/numandev1/react-native-masonry-grid

Customizable masonry Flatlist. it just behave like Flatlist but using ScrollView behind the scene
https://github.com/numandev1/react-native-masonry-grid

android flatlist gallery grid grid-layout ios list masonry masonry-flatlist masonry-grid masonry-list masonry-scroll pinterest react-native scrollview

Last synced: about 1 year ago
JSON representation

Customizable masonry Flatlist. it just behave like Flatlist but using ScrollView behind the scene

Awesome Lists containing this project

README

          

### Would you like to support me?




Buy Me A Coffee

# react-native-masonry-grid

Customizable masonry Flatlist. it just behave like [Flatlist](https://reactnative.dev/docs/flatlist) but using [ScrollView](https://reactnative.dev/docs/scrollview) behind the scene

## Installation

```sh
npm install react-native-masonry-grid
```

## Preview

| ![](media/2columns.gif) | ![](media/2columns.gif) | ![](media/4columns.gif) |
| :---------------------: | :---------------------: | :---------------------: |
| 2-columns | 3-columns | 4-columns |

## Usage

```js
import MasonryFlatlist from 'react-native-masonry-grid';

// ...
const DATA = [
{
name: 'Coffee Now!',
url: 'https://mp-staging-ix.onshobbak.net/media/ninja-catalog-42/eac92236-0e4f-466a-9bc2-e68a04bb96ad_NowCoffeeNew.png',
height: 136, // Mendatory and can be dynamic for each item
}
]

{
return {}} />;
}}
/>
```

## Props

```
interface Props extends ScrollViewProps {
numColumns?: number;
loading?: boolean;
LoadingView?: React.ReactNode | React.ReactElement | null;

columnWrapperStyle: StyleProp;
ListHeaderComponent?: React.ReactNode | React.ReactElement | null;
ListEmptyComponent?: typeof React.Fragment | React.ReactElement | null;
ListFooterComponent?: React.ReactNode | React.ReactElement | null;
ListHeaderComponentStyle?: StyleProp;
contentContainerStyle?: StyleProp;
containerStyle?: StyleProp;
onRefresh?: RefreshControlProps['onRefresh'];
onEndReached?: () => void;
keyExtractor?: ((item: any, index: number) => string) | undefined;
onEndReachedThreshold?: number;
style?: StyleProp;
data: any[];
renderItem: ({ item, index }: { item: any; index: number }) => ReactElement;

}
```

| name | required | default | description |
| ------------------ | -------- | ------- | -------------------------------------------------------------------------------------- |
| numColumns | no | 2 | Number of columns you want to render. |
| columnWrapperStyle | no | null | Optional custom style for multi-item rows generated when `numColumns > 1`. |
| loading | no | false | for enabling loadingView. |
| LoadingView | no | null | Loader component will be show when loading prop will true. |
| ref | no | null | it will be forwardRef to `ScrollView` then you can use all props of scrollview by ref. |

**Note:** Other props are the same as [Flatlist](https://reactnative.dev/docs/flatlist). you can read flatlist docs for other props which are in props but not in the props table.

## Contributing

See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.

## License

MIT