Переменная React Redux Store не найдена, даже если она находится в хранилище - PullRequest
0 голосов
/ 07 апреля 2020

Я работаю над реактивно-нативным проектом с редуксом. До сих пор я успешно подключил Redux к одному экрану и пытаюсь подключить следующий, первый работает просто отлично. Проблема в том, что я получаю:

TypeError: Невозможно прочитать свойство 'currentView' из неопределенного

при попытке извлечь значение из хранилища.

Мой магазин успешно настроен и intialized: https://ibb.co/WxrKMgh (все также работает на первом экране)

Моя реализация (сокращена для лучшей читаемости):

 import { connect } from 'react-redux';

class App extends React.Component {
    public state: any;
    public props: any;
    public setState: any;
    render() {
        return (
            <>
                {this.props.authentication.currentView === 'initializing' && (
                    <InitializationScreen />
                )}
                {'hallo' == 'mainNav' && <AppContainer />}
            </>
        );
    }
}

const mapStateToProps = (state: any) => {
    const { currentView } = state;
    return {
        currentView,
    };
};

export default connect(mapStateToProps)(App);

Проблемы c код:

{this.props.authentication.currentView === 'initializing' && (
                <InitializationScreen />
            )}

Вы видите, что является причиной ошибки?

Большое спасибо!


Для дальнейшего использования я нашел решение:

я изменил mapstatetoprops на:

const mapStateToProps = (state: any) => {
const { currentView } = state.authentication;
return {
    currentView,
};
};

Это в основном то же самое, но по какой-то причине, так оно и есть работает (хотя должно быть точно так же)

Состояние в mapStateToProps:

{
"search": {
"searchType": "Quick Search",
},
"authentication": {
"currentView": "mainNav"
}
}

Ответы [ 3 ]

2 голосов
/ 07 апреля 2020

Я думаю, что это должно быть this.props.currentView

2 голосов
/ 07 апреля 2020

Вы передаете currentView в качестве верхнего уровня для компонента, поэтому он должен быть доступен в this.props

this.props.currentView === 'initializing' && (
                <InitializationScreen />
            )}
0 голосов
/ 07 апреля 2020

Пожалуйста, используйте this.props.currentview , потому что его вызов откуда-то еще

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...