нарушение инварианта не может найти хранилище в контексте подключения (приложение) - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь разобраться с Redux внутри корневого файла

import React from 'react';
import {Provider,connect} from 'react-redux';
import {createStore,bindActionCreators} from 'redux';
import {AsyncStorage} from 'react-native';
import {View} from "@shoutem/ui/components/View";
import { Spinner } from '@shoutem/ui';
import { Login } from './Actions/user';
import { createProfile } from './Actions/profile';
import Nav from './Screens/Nav';
import reducers from './Reducers';

export class App extends React.Component {
    state = {
        loading: true
    };

    constructor(props) {
        super(props);
        console.log(props);
        console.disableYellowBox = true;
    }

    async iniRoute()
    {
      return await AsyncStorage.getItem('@Profile:user');
    }

    componentWillMount()
    {
        this.iniRoute().then(data => {
            if (data)
            {
                this.props.Login(data.username,data.email);
                this.props.createProfile(data.name , data.username , data.email , data.birthday , data.password , data.location);
                this.setState({loading:false});
            }
            else
            {
                this.setState({loading:false});
            }
        });
    }

    render() {
        return (
            <Provider store = {createStore(reducers)}>
                <View>
                    {!this.state.loading && <Nav />}
                    {this.state.loading && <Spinner />}
                </View>
            </Provider>
        );
    }
}

const mapDispatchToProps = dispatch => (
    bindActionCreators({
      Login,
      createProfile,
    }, dispatch)
  );

 export default connect(mapDispatchToProps)(App);

возникает следующая ошибка

Не удалось найти хранилище в контексте подключения.(приложение)

Я могу написать несколько неправильных кодов, потому что мой опыт работы с Redux не очень хороший,

в этом случае - кто-нибудь может сказать мне, как этого добиться, не сталкиваясь с этими ошибками.

1 Ответ

0 голосов
/ 11 февраля 2019

App.js должен быть тот, который упакован с провайдером.Именно провайдер предоставляет вашему приложению экземпляр хранилища, и только после этого соединение может получить хранилище.По сути, вы пытаетесь прочитать магазин, прежде чем создать его.Поэтому, если у вас есть index.js, который отображает файл App.js, вы должны изменить его с

//Your code here
//wrappers on App
<App/>
//wrappers on App
//Your code here

на

//Your code here
<Provider>
   //wrappers on App
   <App/>
   //wrappers on App
</Provider>
//Your code here

. Базовое руководство можно найти, выполнив поиск поставщика в Google.Вот ссылка https://redux.js.org/basics/usage-with-react

...