React et Redux sont des bibliothèques indépendantes.
React vous fournit un cadre pour la création de documents HTML. Les composants représentent en quelque sorte une partie particulière du document. Les méthodes associées à un composant peuvent alors manipuler la partie très particulière du document.
Redux est un cadre qui prescrit une philosophie spécifique pour le stockage et la gestion des données dans les environnements JS. Il s'agit d'un gros objet JS avec certaines méthodes définies. Le meilleur cas d'utilisation se présente sous la forme de la gestion de l'état d'une application web.
Comme React prescrit que toutes les données doivent descendre de la racine vers les feuilles, il devient fastidieux de gérer tous les props, de définir les props dans les composants puis de passer certains props aux enfants. Cela rend également l'état de l'application tout entier vulnérable.
React Redux offre une solution propre, où il vous connecte directement au magasin Redux, en enveloppant simplement le composant connecté autour d'un autre composant React( votre Container
). Puisque dans votre implémentation, vous avez déjà défini quelle partie de l'état de l'application entière vous avez besoin. Donc connect
prend ces données dans le magasin et les transmet en tant que props au composant autour duquel il s'enroule.
Prenez cet exemple simple :
class Person extends Component {
constructor(props){
this.name = this.props.name;
this.type = this.props.type;
}
render() {
return <p> My name is {this.name}. I am a doctor { this.type } </p>
}
}
const connect = InnerComponent => {
class A extends Component{
render() {
return <InnerComponent {...this.props} type="Doctor"/>
}
}
A.displayName = `Connect(${InnerComponent.displayName})`
return A
}
connect
passe une prop type
.
De cette façon, un connect fait office de conteneur pour le composant Personne.
13 votes
Les conteneurs sont conscients du magasin et transmettent les props d'état aux composants. Le seul but des composants est de rendre du html, idéalement les composants sont sans état alors il sera plus facile d'écrire des tests unitaires.