Ошибка, которую вы получаете, возникает, когда источник данных, переданный на FlatList
, не является массивом. В вашем случае this.props.customers
не определено, пока не будет возвращена функция this.props.getCustomers()
.
Я бы предложил использовать состояние для отображения плоского списка в вашем CustomersList
компоненте. И обновите состояние, когда результаты будут возвращены из асинхронного вызова axios this.setState({customers : nextProps.customers})
, который переопределяет FlatList
с массивом клиентов.
class CustomersList extends Component {
constructor(props){
super(props);
this.state = {
customers : []
};
}
...
render = () => {
return (
<View style={{flex:1}}>
{this.state.customers.length > 0 ?
<FlatList
data={this.state.customers}
keyExtractor={this._keyExtractor}
renderItem={this._renderItem}
extraData={this.state}
numColumns={1}
/> :
<View style={styles.container}>
<ActivityIndicator size={'large'}/>
</View>
}
</View>
);
}
}
Что касается вашей навигации, я сам проверил ваш код, и он работал :) (Как вы можете видеть, я использовал <ActivityIndicator />
для рендеринга, когда список все еще выбирается.