ich auf einer App reagieren-native arbeitete mit erstellt: create-react-native-app
Mit Redux mit React india
Soweit ich der meisten Top-Level-Komponente sagen kann, ist in der App.js Datei und ich habe den Provider dort importiert und wickelte es um die Top-Level-Komponenten, aber ich bin immer noch die folgenden Fehler aus irgendeinem Grund immer:
ExceptionsManager.js:65 Invariant Violation: Could not find "store" in either the context or props of "Connect(App)". Either wrap the root component in a , or explicitly pass "store" as a prop to "Connect(App)".
Was mache ich falsch?
Hier ist mein Code:
import React from 'react';
import { StyleSheet, Text, View, FlatList, TextInput, StatusBar, Button,TouchableOpacity } from 'react-native';
import { TabNavigator, StackNavigator } from 'react-navigation';
import { Constants } from 'expo'
import { purple, white } from './utils/colors'
import { saveDeckTitle, getDecks, getDeck, addCardToDeck } from './utils/api'
import { Provider } from 'react-redux'
import { createStore } from 'redux'
import reducer from './reducers'
import { connect } from 'react-redux'
import Decks from './components/Decks'
import NewQuestionView from './components/NewQuestionView'
import NewDeck from './components/NewDeck'
const R = require('ramda')
const store = createStore(reducer)
const DecksETC = StackNavigator({
Decks: {
screen: Decks
},
NewDeck: {
screen: NewDeck
},
NewQuestionView: {
screen: NewQuestionView
}
})
const NewDeckETC = StackNavigator({
NewDeck: {
screen: NewDeck
},
Decks: {
screen: Decks
},
NewQuestionView: {
screen: NewQuestionView
}
})
const Tabs = TabNavigator({
DecksETC: {
screen: DecksETC
},
NewDeckETC: {
screen: NewDeckETC
}
});
class App extends React.Component {
render() {
console.log('R', R)
return (
<Provider store={store}>
<Tabs />
</Provider>
// <Tabs />
);
}
}
const styles = StyleSheet.create({
container: {
paddingTop: 23,
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
},
input: {
margin: 15,
height: 40,
borderColor: '#7a42f4',
borderWidth: 1
},
});
function mapStateToProps(state) {
console.log('mapStateToProps')
debugger
return {
'sample': 'sample'
}
}
export default connect(mapStateToProps)(App)
Danke, aber das machte keinen Unterschied. Ich bekomme immer noch Fehler: Invariant Violation: Konnte "store" weder im Kontext noch in den Requisiten von "Connect (App)" finden. Entweder wickle die Root-Komponente in eine oder übertrage explizit "store" als Prop zu "Connect (App)". –
preston
Ich denke, der Fehler entsteht, weil Sie sowohl den Provider als auch die Verbindung zur gleichen Zeit verwenden, Redux folgt einem hierarchischen Muster, so dass Sie zuerst den Speicher im Provider übergeben und dann verwenden Sie verbinden, so dass Sie besser eine separate Datei erstellen Verwenden Sie connect –
Überprüfen Sie dies https://gist.github.com/aurelkturtua/b30064ba59b3c16d1a6b18260fcd7bcc –