import React, { Component } from "react";
import { View, Text, FlatList, ActivityIndicator } from "react-native";
// import { List, ListItem, SearchBar } from "react-native-elements";
class FlatListDemo extends Component {
constructor(props) {
super(props);
this.state = {
loading: false,
data: [],
page: 1,
seed: 1,
error: null,
refreshing: false,
canLoadMore: false
};
}
componentDidMount() {
this.makeRemoteRequest();
}
makeRemoteRequest = () => {
console.log('caaaaallll')
const { page, seed } = this.state;
const url = `https://randomuser.me/api/?seed=${seed}&page=${page}&results=20`;
this.setState({ loading: true });
fetch(url)
.then(res => res.json())
.then(res => {
this.setState({
data: [...this.state.data, ...res.results],
error: res.error || null,
loading: false,
refreshing: false
});
})
.catch(error => {
this.setState({ error, loading: false });
});
};
handleRefresh = () => {
this.setState(
{
page: 1,
seed: this.state.seed + 1,
refreshing: true
},
() => {
this.makeRemoteRequest();
}
);
};
handleLoadMore = () => {
if(this.state.canLoadMore) {
// alert('ok')
this.setState({page: this.state.page + 1, canLoadMore: false},
() => {
this.makeRemoteRequest();
}
);}
};
renderSeparator = () => {
return (
<View
style={{
height: 1,
width: "86%",
backgroundColor: "#CED0CE",
marginLeft: "14%"
}}
/>
);
};
// renderHeader = () => {
// return <SearchBar placeholder="Type Here..." lightTheme round />;
// };
renderFooter = () => {
if (!this.state.loading) return null;
return (
<View
style={{
paddingVertical: 20,
borderTopWidth: 1,
borderColor: "#CED0CE"
}}
>
<ActivityIndicator animating size="large" />
</View>
);
};
render() {
console.log('stttttt', this.state)
return (
<View containerStyle={{ borderTopWidth: 0, borderBottomWidth: 0 }}>
<FlatList
data={this.state.data}
renderItem={({ item }) => (
<Text style={{margin: 20}}>{item.email}</Text>
)}
keyExtractor={(item, index) => index}
ItemSeparatorComponent={this.renderSeparator}
// ListHeaderComponent={this.renderHeader}
ListFooterComponent={this.renderFooter}
// onRefresh={this.handleRefresh}
// refreshing={this.state.refreshing}
onEndReached={this.handleLoadMore}
onEndReachedThreshold={0.5}
onMomentumScrollBegin={() => this.setState({ canLoadMore: true })}
/>
</View>
);
}
}
export default FlatListDemo;
Last active
November 3, 2018 07:09
-
-
Save hungdev/254715fba15658f7ce8e152f79c52b46 to your computer and use it in GitHub Desktop.
Load more
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment