J'ai commencé à créer une application native react et je souhaite y ajouter un redux. J'ai utilisé redux plusieurs fois avec react-dom et je n'ai jamais eu de problèmes. Maintenant, avec react-native, je ne peux pas le faire fonctionner.
J'ai lancé une application standard très simple, mais lorsque j'ajoute le connect
HOC à mon composant, j'obtiens l'erreur suivante: p >
Voici le code de mon composant:
"react": "16.6.3", "react-native": "0.57.4", "react-redux": "^7.0.2", "redux": "^4.0.1"
Depuis la console. log Je peux voir que le connect
hoc renvoie effectivement un objet, pas un composant:
J'ai créé mon projet en utilisant react-native-create-app
et voici mes dépendances:
import React, { Component } from 'react'; import { Provider } from 'react-redux'; import { createStore, combineReducers } from 'redux'; import { connect } from 'react-redux'; import { View } from 'react-native'; const mainReducer = (state = { msg: 'Hello World!' }, action) => { switch(action.type) { default: return state; } }; const store = createStore(combineReducers({ mainReducer })); class Main extends Component { render() { console.log('props: ', this.props); return ( <View>{this.props.msg}</View> ); } } const MainWithRedux = connect(state => ({ msg: state.msg }))(Main); console.log('MainWithRedux: ', MainWithRedux); export default class App extends Component { render() { return ( <Provider store={store}> <MainWithRedux /> </Provider> ); } }
Est-ce que je manque quelque chose? Comment puis-je intégrer correctement react-redux avec react-native?
3 Réponses :
Lorsque vous utilisez connect, vous ne spécifiez pas de réducteur à partir duquel vous devez importer "msg".
const MainWithRedux = connect(state => ({ msg: state.mainReducer.msg }))(Main);
Cela peut peut-être résoudre votre problème.
Quiconque rencontre ce problème, je pense que cela se produit à cause des versions react-native
et react-redux
. Voir ceci pour un peu plus d'informations: https://github.com/reduxjs/react -redux / issues / 1274
J'ai eu cette erreur sur react-native@0.56.1
et react-redux@7.0.3
. Je ne suis actuellement pas en mesure de mettre à jour ma version react-native
, donc je me suis retrouvé avec la rétrogradation de ma version react-redux
. Je l'ai rétrogradé à react-redux@5.0.6
et tout semble fonctionner maintenant.
Jeter ça juste au cas où, parce que j'ai moi-même lutté contre cette erreur très cryptique. J'ai fini par découvrir que j'avais importé Provider de react-navigation au lieu de react-redux.