Не удалось найти «store» ни в контексте, ни в «Connect (App)». У меня есть <Provider>упаковка компонента уже - PullRequest
0 голосов
/ 03 сентября 2018

Инвариантное нарушение: не удалось найти «store» ни в контексте, ни в подпунктах «Connect (App)». Либо оберните корневой компонент в, либо явно передайте «store» в качестве реквизита «Connect (App)».

Ненавижу задавать вариант вопроса, который задавался много раз, но я попробовал все предложенные решения, но безуспешно. https://codesandbox.io/s/0pyl7n315w

index.js

import React, {Component} from 'react'
import {AppRegistry} from 'react-native'
import {Provider} from 'react-redux'
import App from './app'

import configureStore from './store.js'
const store = configureStore();

class MyCounterApp extends Component {
    render() {
        return(
            <Provider store={store}>
            <App/>
            </Provider>
        )
    }
}

AppRegistry.registerComponent('MyCounterApp', () => MyCounterApp)

app.js

import React from 'react';
import {Button, Text, View} from 'react-native';
import {addToCounter} from "./actions";
import { connect } from 'react-redux';

class App extends React.Component {

    handleOnClick = event => {
        this.props.addToCounter()
    };

    render() {
        return (
                <View>

                    <Text>{this.props.count}</Text>

                    <Button onPress={() => this.props.addToCounter()}
                         title={"Click Me!"}>
                     </Button>

                </View>
    )
    }
}

function mapDispatchToProps(dispatch) {
    return {
        addToCounter: () => dispatch(addToCounter())
    }
}

function mapStateToProps(state) {
    return {
        count: state.count
    }
}


export default connect(mapStateToProps, mapDispatchToProps)(App)

store.js

import reducer from './reducer'
import {createStore} from 'redux'

export default function configureStore() {
    let store = createStore(
        reducer
    )
    return store
}

reducer.js

import {ADD_TO_COUNTER} from './actions'

const initialState = {
    counter: 0
}


const reducer = (state = initialState, action) => {

    switch (action.type) {
        case ADD_TO_COUNTER:
            return {
                ...state,
                counter: state.counter + 1
            }
        default:
            return state
    }
}

export default reducer;

Я следую этому уроку: https://medium.com/@pavsidhu/using-redux-with-react-native-9d07381507fe

1 Ответ

0 голосов
/ 03 сентября 2018

Вы не предоставили магазин для вашего компонента приложения. поэтому не удалось соединить компонент с редуктором:

class MyCounterApp extends Component {
    render() {
        return(
            <Provider store={store}>
                <App/>
            </Provider>
        )
    }
}

Удалить провайдера из app.js

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