J'ai un seul composant App.js
où j'essaye d'enregistrer l'état en utilisant redux
. Dans index.js où j'ai défini le magasin pour seulement <App />
composant.
index.js
let store = createStore(scoreReducer);
ReactDOM.render(
<Provider store={store}><App /></Provider>,
document.getElementById("root")
);
registerServiceWorker();
J'ai cette méthode dans App.js
pour mapper l'état des accessoires qui est disponible dans App.js
.
App.js
function mapStateToProps(state) {
return { score: state.score, status: state.status };
}
Tout va bien jusqu'à présent, maintenant je ne sais pas comment accéder à { this.props.score}
dans un autre composant?
Quels changements dois-je faire dans index.js
et deuxième composant si je veux accéder à {this.props.score}
dans un autre composant?
Lorsque vous utilisez le fournisseur, tout composant qui est enfant du composant d'ordre supérieur du fournisseur peut accéder aux propriétés du magasin via l'utilisation de la fonction connect
.
Vous pouvez donc ajouter ce qui suit dans n'importe quel composant qui est un enfant du fournisseur et accéder à l'accessoire de score
function mapStateToProps(state) {
return { score: state.score, status: state.status };
}
export default connect(mapStateToProps)(MyComponent)
Cependant, si cet autre composant est un enfant direct du composant App
, vous pouvez également passer le score prop
en tant que prop
à ce composant de l'application comme
<MyComponent score={this.props.score}/>
Le composant Provider
définit le contexte de tous ses enfants, en y fournissant le magasin. lorsque vous utilisez le High Order Component (HOC) connect
, vous pouvez envelopper n'importe quel composant et accéder au magasin via les mapStateToProps
et mapStateToProps
fournis, quelle que soit leur imbrication. Vous pouvez également accéder au magasin à l'aide du contexte context.store
mais ce n'est pas recommandé. Utiliser les fonctions de carte et connect
, similaire à ce que vous avez avec votre composant App
, est la meilleure approche.