ReactJS - Redux : Guide pour Débutant

Salut là, développeur en herbe ! Je suis ravi de devenir ton guide sur cette exciting aventure dans le monde de ReactJS et Redux. En tant que quelqu'un qui enseigne l'informatique depuis des années, j'ai vu des dizaines d'étudiants briller quando ils ont enfin saisi ces concepts. Alors, mettons-nous à l'eau et créons un peu de magie !

ReactJS - Redux

Qu'est-ce que Redux ?

Avant de plonger dans le code, comprenons ce qu'est Redux. Imagine que tu organises une grande fête (c'est ton application), et que tu dois suivre tous les invités, la nourriture et la musique (ça c'est l'état de ton application). Redux est comme ton organisateur de fête super efficace qui garde tout en ordre dans un seul endroit centralisé.

Redux est une bibliothèque de gestion d'état qui t'aide à gérer les données de tes applications React de manière plus efficace. C'est surtout utile pour les applications plus grandes où transmettre des données entre les composants peut devenir compliqué.

Concepts Clés de Redux

Voyons les principaux concepts de Redux :

1. Store

Le store est comme un grand conteneur qui contient tout l'état de ton application. C'est la source unique de vérité pour les données de ton application.

2. Actions

Les actions sont comme des messages qui disent au store ce qui s'est passé dans ton application. Ce sont des objets JavaScript purs qui doivent avoir une propriété type.

3. Reducers

Les reducers sont des fonctions qui spécifient comment l'état de l'application change en réponse aux actions. Ils prennent l'état actuel et une action comme arguments et retournent un nouvel état.

4. Dispatch

Dispatch est une méthode qui envoie des actions au store pour mettre à jour l'état.

Maintenant, voyons ces concepts en action avec quelques exemples de code !

Configuration de Redux

Tout d'abord, nous devons installer Redux et React-Redux :

npm install redux react-redux

Maintenant, créons une application compteur simple pour démontrer comment fonctionne Redux.

Création du Store

import { createStore } from 'redux';

// Voici notre reducer
const counterReducer = (state = 0, action) => {
switch (action.type) {
case 'INCREMENT':
return state + 1;
case 'DECREMENT':
return state - 1;
default:
return state;
}
};

// Création du store
const store = createStore(counterReducer);

Dans cet exemple, nous créons un store avec un reducer compteur simple. Le reducer écoute les actions 'INCREMENT' et 'DECREMENT' et met à jour l'état en conséquence.

Définition des Actions

// Créateurs d'actions
const increment = () => ({ type: 'INCREMENT' });
const decrement = () => ({ type: 'DECREMENT' });

Ceux-ci sont nos créateurs d'actions. Ils retournent des objets action auxquels notre reducer répondra.

Utilisation du Composant Provider

Le composant Provider rend le store Redux disponible à tout composant imbriqué qui a besoin d'accéder au store Redux.

import React from 'react';
import { Provider } from 'react-redux';
import { createStore } from 'redux';
import counterReducer from './reducers';
import App from './App';

const store = createStore(counterReducer);

const Root = () => (
<Provider store={store}>
<App />
</Provider>
);

export default Root;

Ce code enveloppe notre composant principal App avec le Provider, donnant à tous les composants accès au store.

Connexion des Composants à Redux

Maintenant, créons un composant Counter qui utilise notre store Redux :

import React from 'react';
import { connect } from 'react-redux';
import { increment, decrement } from './actions';

const Counter = ({ count, increment, decrement }) => (
<div>
<h2>Compte : {count}</h2>
<button onClick={increment}>+</button>
<button onClick={decrement}>-</button>
</div>
);

const mapStateToProps = (state) => ({
count: state,
});

const mapDispatchToProps = {
increment,
decrement,
};

export default connect(mapStateToProps, mapDispatchToProps)(Counter);

Reprenons cela :

  1. Nous importons connect de react-redux, ce qui nous permet de connecter notre composant au store Redux.
  2. mapStateToProps dit à Redux comment mapper l'état aux props dans notre composant.
  3. mapDispatchToProps nous permet de mapper nos créateurs d'actions aux props.
  4. connect enveloppe notre composant, injectant l'état et les créateurs d'actions en tant que props.

Méthodes de l'API Redux

Voici un tableau de quelques méthodes importantes de l'API Redux :

Méthode Description
createStore(reducer, [preloadedState], [enhancer]) Crée un store Redux
combineReducers(reducers) Combine plusieurs reducers en une seule fonction de réduction
applyMiddleware(...middlewares) Applique des middlewares à la méthode dispatch du store Redux
bindActionCreators(actionCreators, dispatch) Transforme un objet dont les valeurs sont des créateurs d'actions en un objet avec les mêmes clés mais avec chaque créateur d'actions enveloppé dans un appel dispatch

Conclusion

Et voilà ! Nous avons couvert les bases de Redux, de la compréhension de ses concepts fondamentaux à sa mise en œuvre dans une application React. Souviens-toi, Redux peut sembler un peu complexe au début, mais c'est comme apprendre à rouler à vélo - une fois que tu as compris, tu te demanderas comment tu faisais sans !

En continuant ton voyage, tu découvriras des fonctionnalités plus avancées de Redux, comme les middlewares et les actions asynchrones. Mais pour l'instant, félicite-toi - tu as fait tes premiers pas dans un monde plus large de gestion d'état !

Continue de coder, continue d'apprendre, et surtout, continue de t'amuser ! Jusqu'à la prochaine fois, bon Redux-ing !

Credits: Image by storyset