Sommaire

Introduction

Dans le chapitre précédent, nous avons vu comment gérer l’état et le cycle de vie d’une application à l’aide de Redux. Nous avons également vu comment gérer des actions asynchrones (requêtes HTTP par exemple) à l’aide de Redux-Thunk. Il existe plusieurs moyens de gérer les effets de bord d’une application avec Redux, et Redux-Thunk est probablement le plus simple à mettre en œuvre. Dans ce chapitre, nous allons en voir un autre permettant de mettre en place des patterns plus évolués : Redux-Saga (https://github.com/redux-saga/redux-saga).

La première chose permettant de dire que Redux-Saga diffère de Redux-Thunk est qu’il ne vient pas s’intégrer dans le cycle de vie de base de Redux (tel que décrit dans le chapitre précédent : actions, reducer, etc.). Le principe sera de définir des sagas qui seront déclenchées sur des actions données et qui auront la possibilité d’effectuer des traitements, comme lire le state, appeler des fonctions asynchrones, ou déclencher de nouvelles actions. Tout cela s’intégrera dans notre store Redux à l’aide d’un middleware.

L’une des principales difficultés à l’utilisation de Redux-Saga est qu’il repose sur une fonctionnalité de JavaScript assez peu utilisée au quotidien : les générateurs ou fonctions génératrices. ...