A React Native component for grid view
react-native-easy-grid-view
A React Native component for grid view. Compatible with both iOS and Android.
Installation
npm install react-native-easy-grid-view --save
Usage
Props
Prop | Type | Description | Required | Default |
---|---|---|---|---|
spacing |
number |
Set spacing between cells | No |
0 |
renderCell |
function(data) |
function of rendering cell view | Yes |
DataSource
Use cloneWithCells(data,number of cells in a row)
to clone data
this.state = {
dataSource: ds.cloneWithCells([1,2,3,4],3)
};
Example
import React, {Component} from "react";
import {Text, View} from "react-native";
import GridView from "react-native-easy-grid-view";
class Example extends Component {
constructor(props) {
super(props);
var ds = new GridView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
this.state = {
dataSource: ds.cloneWithCells([
{
text: 1,
backgroundColor:'#f00'
}
, {
text: 2,
backgroundColor:'#0f0'
}, {
text: 3,
backgroundColor:'#00f'
}, {
text: 4,
backgroundColor:'#f0f'
}, {
text: 5,
backgroundColor:'#fff'
}, {
text: 6,
backgroundColor:'#000'
}], 2),
cellWidth: 0,
cellHeight: 0
};
}
_renderCell(cell) {
return <View onLayout={event => {
var width = event.nativeEvent.layout.width;
if(this.state.cellWidth!=width){
this.setState({cellWidth:width})
}
if(this.state.cellHeight!=width){
this.setState({cellHeight:width})
}
}}>
<View style={{width:this.state.cellWidth,height:this.state.cellHeight,justifyContent:'center',backgroundColor:cell.backgroundColor}}
resizeMode={Image.resizeMode.stretch} source={cell.image}>
<Text style={{backgroundColor:'#0004',textAlign:'center',color:'#fff',fontSize:24}}>{cell.text}</Text>
</View>
</View>
}
render() {
return <View>
<GridView dataSource={this.state.dataSource}
spacing={8}
style={{padding:16}}
renderCell={this._renderCell.bind(this)}
/>
</View>
}
}
module.exports = Example;