Мое приложение корректно извлекает информацию из Redx, но у меня возникают проблемы с доступом к этой информации с моего экрана. Я отправляю свои действия в ComponentDidMount (), затем я хочу иметь возможность использовать данные из моей базы данных (которая извлекается в диспетчере и защищается в моем mapStateToProps ()).
Я правильно получаю информацию, но у меня проблема с синхронизацией. Я не могу использовать информацию в моем плоский список. Я полагаю, что поток ...
ComponentDidMount () -> отправляет действие для извлечения информации из базы данных. ComponentWillUpdate () -> this.props.information поступает через функцию Render () -> динамически заполняет flatlist (ЭТО ТАМ, ГДЕ ИНФОРМАЦИЯ НЕ РАБОТАЕТ).
Вот код:
ComponentDidMount(){
this.props.navigation.addListener("willFocus", e => {
AsyncStorage.getItem('BL_userId').then(userId => {
this.props.pullHabits(userId),
this.props.pullReminders(userId),
this.props.pullTasks(userId)
}).then(this.setState({ isLoading: false })).then(console.log('done'))
})
}
render(){
let habitContent
console.log(Object.values(this.props.habits.habits)) //this is an array of objects
if (this.state.isLoading === true) {
habitContent = <View style={{ justifyContent: 'center', alignItems: 'center', flex: 1 }}><ActivityIndicator color="#14AC6C" /></View>
} else if (this.props.habits.habits.length >= 1) {
habitContent = <HabitList
style={styles.habitList}
habits={Object.values(this.props.habits.habits)}
onPress={this.handleHabitClick}
// onArrowSelected={this.handleArrowClick}
/>
} else {
<View style={{ justifyContent: 'flex-start', alignItems: 'center', flex: 1, paddingTop: 75 }}>
<Text style={styles.noHabitHeader}>No Habits Available</Text>
</View>
}
return(<View>
{habitContent}
</View>)
const mapStateToProps = state => {
return {
habits: state.habits,
tasks: state.tasks,
reminders: state.reminders
};
};
const mapDispatchToProps = dispatch => {
return {
pullHabits: (userId) => dispatch(pullHabits(userId)),
pullTasks: (userId) => dispatch(pullTasks(userId)),
pullReminders: (userId) => dispatch(pullReminders(userId)),
}
}```