Redux / React-Redux - правильный доступ к информации о реквизитах - PullRequest
0 голосов
/ 20 января 2020

Мое приложение корректно извлекает информацию из 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)),
}
}```
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...