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.