11import React from 'react'
22import {
3- View , Text , StyleSheet , Image , FlatList
3+ View , Text , StyleSheet , Image , FlatList , ActivityIndicator
44} from 'react-native'
5-
65import { ListItem } from 'react-native-elements'
76
87import { connect } from 'react-redux'
9-
108import PropTypes from 'prop-types'
11-
9+ import { getCitiesFromAPI } from '../../actions/citiesActions'
1210const styles = StyleSheet . create ( {
1311 container : {
1412 flex : 1 ,
@@ -30,6 +28,9 @@ class Cities extends React.Component {
3028 />
3129 )
3230 }
31+ componentDidMount ( ) {
32+ this . props . dispatchGetCitiesFromAPI ( )
33+ }
3334 renderCity = ( { item } ) => {
3435 return (
3536 < ListItem
@@ -41,20 +42,33 @@ class Cities extends React.Component {
4142 render ( ) {
4243 return (
4344 < View style = { styles . container } >
44- < FlatList
45- keyExtractor = { ( city ) => city . id }
46- data = { this . props . cities }
47- renderItem = { this . renderCity }
48- />
45+ {
46+ this . props . citiesInfo . isFetching ? (
47+ < ActivityIndicator
48+ animating
49+ />
50+ ) : (
51+ < FlatList
52+ keyExtractor = { ( city ) => city . id }
53+ data = { this . props . cities }
54+ renderItem = { this . renderCity }
55+ />
56+ )
57+ }
4958 </ View >
5059 )
5160 }
5261}
5362
5463const mapStateToProps = ( state , nextProps ) => {
5564 return {
56- cities : state . citiesReducer . cities
65+ cities : state . citiesReducer . cities ,
66+ citiesInfo : state . citiesReducer
5767 }
5868}
5969
60- export default connect ( mapStateToProps ) ( Cities )
70+ const mapDispatchToProps = {
71+ dispatchGetCitiesFromAPI : getCitiesFromAPI
72+ }
73+
74+ export default connect ( mapStateToProps , mapDispatchToProps ) ( Cities )
0 commit comments