Ronaiza Cardoso

25 février 2024

Min Read

React Hooks contre Redux démystifié

Redux et Hooks React ne doivent pas être considérés comme l'opposé de l'un de l'autre. Ce sont des choses différentes, avec des objectifs distincts.

Quand Hooks React est né, plusieurs développeurs semblaient perplexes face aux concepts introduits et à la manière dont ils seront interpolés dans le Redux library. Le Utilisez Reducer Hook a accru cette confusion.

Dans cet article, je vais vous expliquer comment Redux et le nouveau Hook React Utilisez Reducer sont différents et comment ils peuvent être utilisés.

blue arrow to the left
Imaginary Cloud logo

Redux and React Hooks : state management

Redux a été créé pour gérer l'état de l'application. Il fournit plusieurs outils pour simplifier la gestion de l'état global de l'application.

Les nouveaux ajouts au Réagir library, Use the context et Utilisez Reducer, est également venu gérer l'état d'un Réagir candidature. Cependant, il présente une subtile différence avec Redux, que je vais clarifier plus loin.

Mais tout d'abord, permettez-moi de vous présenter Hooks React.

blue arrow to the left
Imaginary Cloud logo

What is React Hooks ?

React Hooks est la nouvelle méthode de gestion de l'état et du cycle de vie des composants React, sans compter sur les classes de composants. Il a été introduit dans la version 16.8 de la bibliothèque et a pour but de réduire la complexité des composants en partageant la logique entre eux.

Hooks React fournit un moyen facile de les manipuler composant behavior and partagez composant logique.

Le Hooks React cette fonctionnalité n'a pas l'intention de remplacer les connaissances antérieures de Réagir des concepts tels que cycle de vie, état, accessoires, contexte, et réfs.

Avec Hooks React, nous pouvons écrire nos hooks personnalisés pour extraire la logique qui sera utilisée dans plusieurs composants et implémenter le D.R.Y (Ne vous répétez pas) motif.

Dans l'extrait ci-dessous, vous pouvez voir un exemple de hooks personnalisés écrits pour l'un de nos projets :

undefined

D'accord, maintenant que nous savons Hooks React, jetons un coup d'œil à Redux.

blue arrow to the left
Imaginary Cloud logo

What is Redux ?

Redux est une bibliothèque permettant de gérer l'état global de l'application. Dans cette bibliothèque, nous pouvons trouver plusieurs outils qui nous aident, les développeurs, à être en contact avec l'état de l'application et à le transformer en donnant à l'utilisateur la possibilité d'émettre actions.

Redux, comme le dit la documentation, peut être décrit selon trois principes fondamentaux :

  1. Une source unique de vérité: l'état global de votre application est enregistré dans une arborescence d'objets au sein d'une seule undefined.‍
  2. L'État est en lecture seule: The only way of edit undefined c'est en émettant des actions.‍
  3. Les modifications sont effectuées avec des fonctions pures: Pour mettre à jour le undefined, le réducteur doit être écrit comme une fonction pure.‍

Redux same mis à jour la bibliothèque avec ses crochets personnalisés. Ils peuvent être utilisés pour intégrer les composants qui utilisent Hooks React fonctionnalités permettant d'accéder aux données du magasin et à des actions d'expédition sans avoir recours aux classes de composants.

Maintenant que nous sommes un peu plus familiarisés avec Redux et Hooks React voyons la différence entre les deux.

blue arrow to the left
Imaginary Cloud logo

React Hooks et Redux

Les deux gèrent la gestion de l'État, mais à quelques différences près. Il y a beaucoup d'abstraction dans la phrase suivante, mais cela semble être une règle d'or pour savoir quand utiliser Redux dans votre application :

Redux doit être utilisé dans des applications dotées de plusieurs fonctionnalités. Grâce à ces fonctionnalités, vous partagez des parties des mêmes informations.

Lors de l'utilisation du Use the context et Utilisez Reducer, le Redux les fonctionnalités peuvent être reproduites. Redux propose des outils gratuits qui nous aident à gérer l'application sans réinventer la roue. Il nous offre également les avantages suivants :

  • Sauvegarder l'état actuel de l'ensemble de notre application ;‍
  • Outils de débogage lors du développement tel que outils redux-dev ;‍
  • Modifiez l'état réel sans déclencher un seul nouveau rendu de l'ensemble de l'application, en utilisant undefined fonction.

Sens un peu plus sur la réalité Réagir addictions, Hooks React, pour gérer l'état global et son utilisation idéale.

blue arrow to the left
Imaginary Cloud logo

Le hook UseContext

Le Use the context le crochet vient accéder au état qui est partagé par fournisseurs. Le meilleur scénario pour utiliser le Hooks React Use the context se trouve dans une petite application ou permet de partager de petites informations entre les composants, comme le thème de l'application. Le Use the context a deux concepts principaux, qui sont énumérés ci-dessous.

  1. PrestataireLe fournisseur est responsable de la gestion des changements d'état. Ces changements se répercutent sur l'ensemble des consommateurs. Un excellent exemple pour utiliser le Use the context Hook est thématique.

undefined

This provider create the undefined objet qui sera utilisé dans toutes les applications et une fonction pour le mettre à jour, le undefined. Dans l'extrait ci-dessous, vous pouvez consulter les undefined en action.

undefined

  1. ConsommateurLe consommateur, comme son nom l'indique, consomme le contenu auquel il est abonné. Chaque fois qu'un consommateur modifie l'état du fournisseur, ces changements sont également diffusés par tous les autres consommateurs. Jetons un coup d'œil à l'exemple suivant :

undefined

Dans l'extrait ci-dessus, nous pouvons vérifier l'utilisation de l'objet global undefined pour définir la couleur de fond de notre application.

Après avoir appris à connaître Use the context fonction, il y en a une autre qui embrouille les développeurs. Le Utilisez Reducer crochets. Dans la section ci-dessous, je vais parcourir cette fonctionnalité et expliquer son cas d'utilisation.

Bannière web pour Imaginary Cloud. Texte : « Build scalable products with Web & Mobile Development. » avec un bouton « LEARN MORE » et une illustration isométrique d'un écran d'ordinateur et d'un smartphone.
blue arrow to the left
Imaginary Cloud logo

Est-ce que UseReducer peut remplacer Redux ?

Le Utilisez Reducer hook doit être utilisé dans les composants qui reposent sur une logique complexe. Cela apparaît comme la principale confusion avec le Redux bibliothèque, car les développeurs ont tendance à penser que Utilisez Reducer pourrait remplacer la bibliothèque du directeur de l'État. Mais en fait, son utilisation devrait être limitée aux composants. Cela s'explique principalement par le fait que l'utilisation mondiale de Utilisez Reducer exige la réécriture du nouveau code pour des fonctionnalités telles que le contrôle de la mise à jour des composants.

Comment fonctionne UseReducer ?

Maintenant que nous comprenons le cas d'utilisation du Utilisez Reducer Hook est le moment de montrer de l'action. Dans l'exemple ci-dessous, nous utilisons le nouveau Hook React toxicomanie Utilisez Reducer pour contrôler un composant avec différents états.

Jetons un coup d'œil en profondeur à la Utilisez Reducer paramètres d'entrée et de sortie.

Parameters d'entrée

La déclaration du Utilisez Reducer hook ressemblera très probablement à ceci :undefined

Où l'on peut identifier que Utilisez Reducer hook reçoit deux paramètres, comme indiqué ci-dessous :

  1. Le reducteur fonction : celle utilisée pour transformer l'état global.Dans notre exemple, la fonction réductrice est la réponse responsable à trois actions:

undefined

  1. L'initiale état: représente l'état par défaut.

undefined

Output Parameters

Le premier paramètre de sortie du hook est l'état réel du composant. Cet état doit être utilisé dans notre application pour représenter les données.

undefined

Il suit également la même règle de la Réagir state, c'est-à-dire :

N'écrivez jamais directement dans l'état et l'état doit être mis à jour en émettant actions.

Le actions ce sera expédié by our components doit toujours être représenté comme un seul objet avec le undefined et undefined clé. Où undefined est l'identifiant du expédié action et undefined is the information according which this action s'ajoutera à l'État.

undefined

Emballeur

En plus de toutes ces pièces, nous pouvons voir le résultat final dans l'application ci-dessous :

blue arrow to the left
Imaginary Cloud logo

React Hooks or Redux : les deux.

Redux et Hooks React doivent être considérés comme des compléments et aussi comme des éléments différents. Alors qu'avec le nouveau Hooks React des ajouts, Use the context et Utilisez Reducer, vous pouvez gérer l'état global, dans des projets de plus grande complexité sur lesquels vous pouvez compter Redux pour vous aider à gérer les données de l'application.

Si vous pensez à création d'une application, les deux peuvent être utilisés. Alors que Redux contient l'état global et les actions qui peuvent être envoyées, le Hooks React fonctionnalités permettant de gérer l'état du composant local.

Vous avez trouvé cet article utile ? Ceux-là vous plairont peut-être aussi !

blue arrow to the left
Imaginary Cloud logo

The Imaginary Cloud State Matrix

Most comparisons shrug and say "it depends". Here is what we actually use when we audit or start a React codebase. Two axes: application complexity, meaning how many features share the same data, and team size, meaning how many engineers change that data.

Matrix by Imaginary Cloud mapping React Hooks, Zustand, and Redux Toolkit by project complexity and team size.

The same four rules, in prose, because images travel badly:

  1. One to four engineers, few features sharing data: use React hooks alone. A state library here is over-engineering, and you pay for it in wasted setup.
  2. Five or more engineers, simple application: keep hooks, but write down where shared state lives. Your risk is convention drift, not performance.
  3. Small team, many features sharing data: use Zustand. You need selector-based subscriptions, not organisational scaffolding.
  4. Five or more engineers, many features sharing data: use Redux Toolkit. Structure, audit trail and onboarding speed are worth every line of boilerplate.

And here is the bit that surprises people. Team size, not application complexity, is the stronger predictor. A genuinely complex app maintained by two engineers who share a mental model runs beautifully on hooks. A merely fiddly app maintained by nine engineers across three squads does not, and not because the code cannot express it. Because nine people cannot hold an undocumented convention in their heads at the same time.

What happens when you scale from two engineers to ten?

Picture a product growing from two engineers to ten across a couple of quarters.

At two, hooks-only is optimal. Shared state sits in three contexts, the conventions are unwritten because both engineers wrote them, and shipping is quick. Redux would be dead weight.

At ten, that same architecture flips on you. Onboarding stretches from days into weeks, because there is no canonical answer to "where does this data live", only precedent.

Two engineers solve the same re-render problem independently, in incompatible ways.

Debugging a production incident means reconstructing state by reading code, because there is no action log. Velocity drops, and no single decision caused it.

So the trade-off is not boilerplate versus elegance. It is cost paid upfront versus cost paid at scale, with interest.

The failure runs both ways, mind. Adopting Redux for a two-engineer MVP is a real cost with no return. The signal to watch is not lines of code. It is the day your team stops being able to answer "why did this re-render" without opening a debugger.

blue arrow to the left
Imaginary Cloud logo

How do you migrate from Redux to hooks (or Zustand)?

The reverse migration is increasingly common, usually when the Redux store turns out to be mostly cached server data wearing a disguise.

  1. Audit what the store really holds. In most codebases we inherit, the bulk of it is server state: API responses, cached lists, pagination cursors. That is not client state, and Redux was never its right home.
  2. Move server state to a query library. TanStack Query or SWR handle caching, revalidation and background refetching. The store shrinks dramatically.
  3. Assess what is left. Auth, theme, feature flags, a handful of UI concerns. Frequently small enough for context plus useReducer, or one Zustand store.
  4. Migrate slice by slice. Redux and React hooks coexist quite happily. There is no big-bang cutover, and there should not be one.

Teams regularly find step 2 settles the whole argument on its own. The problem was never Redux. It was using a client state manager as a network cache.

React hooks vs Redux vs Zustand: summary comparison

FeatureReact hooks (Context + useReducer)ZustandRedux (Redux Toolkit)
State scopeComponent-local, or narrow shared slicesGlobal, lightweight storeGlobal, single source of truth
ToolingReact DevTools, no action historyWorks with Redux DevTools via middlewareRedux DevTools, time-travel, full action log
BoilerplateMinimalMinimalModerate, much reduced by Redux Toolkit
Re-render controlManual: memoisation, context splittingBuilt in, via selectorsBuilt in, via selectors
Async handlingRoll your own, or add a query libraryAdd a query libraryThunks, middleware, RTK Query
Onboarding costLow if conventions are documented, high if notLowHigher upfront, lower per extra engineer
Ideal team size1 to 4 engineers1 to 8 engineers5+ engineers, or regulated domains
Ideal applicationMVPs, marketing sites, focused productsMid-sized products with shared UI stateMulti-feature platforms, auditable domains

Want the wider picture? Our guide to React state management covers the full landscape, and our pieces on selecting a tech stack and asynchronous JavaScript patterns cover the ground either side of it.

blue arrow to the left
Imaginary Cloud logo

Frequently asked questions

What does Redux mean?

Redux is an open-source library for managing global application state in JavaScript apps, most often React ones. It keeps shared state in a single object called the store, and changes it only through dispatched actions handled by pure functions called reducers. The name gives the game away: state changes are reduced into one predictable flow.

Should I use Redux or React hooks?

Use hooks for local component state and small shared values like theme or locale. Reach for Redux when several features depend on the same data, when more than five engineers work on the codebase, or when you need an audit trail of state changes. In most production applications, the answer is both, at different layers.

React hooks vs Redux vs Zustand: which should I choose?

Start with hooks. Move to Zustand when shared state outgrows context and you begin fighting re-renders. Move to Redux Toolkit when the team passes roughly five engineers, or the domain demands traceable state changes. Zustand now leads the category on developer satisfaction, while Redux remains the most widely deployed.

Is Redux still relevant in 2026?

Yes. Just not as the automatic default. The State of React 2025 survey finds Redux and Redux Toolkit are still the most widespread solutions, and they remain the strongest option for large teams and regulated domains. For a new project with a small team, Zustand, or no library at all, is now the more common starting point.

When should I use useReducer instead of Redux?

Use useReducer when complex state is penned inside one component or a tight cluster: a multi-step form, a wizard, a data grid. Use Redux when that state is shared across unrelated parts of the application. Scope, not complexity, draws the line.

Can React hooks replace Redux entirely?

For small and mid-sized applications, yes. useContext and useReducer together reproduce most of what Redux does. What they cannot replace without serious custom work is selector-based re-render control, middleware for async logic, and the DevTools debugging experience. Which is exactly what large teams lean on.

What is react redux, and how is it different from Redux?

Redux is framework-agnostic, a state container that works with any UI layer. react-redux is the official binding that wires it into React, giving you the useSelector and useDispatch hooks. You need both to use Redux in a React application.

Does the Context API cause performance problems?

It can. Context has no selector mechanism, so when a provider's value changes, every consumer beneath it re-renders, including the ones that never used the changed part. Fine for values that rarely move. Painful for anything that changes often or is consumed widely.

The verdict: both, deliberately

So is Redux finished? No, of course not. React hooks and Redux are complements, not rivals. Hooks handle component state and shareable logic, Redux handles global state, dispatched actions and the observability that large teams live on, and Zustand now sits comfortably between them.

Back to the building one last time. You do not choose between the tap and the mains. You work out how many rooms need water, how many people are turning the taps, and you plumb accordingly.

Where does your application sit on the complexity axis, where does your team sit on the size axis, and where will both of them sit in twelve months? Architect for that. Not for today.

If you are building or scaling a React application and want a straight answer on your state architecture before it sets hard, our team runs technical audits that do exactly that.

Ronaiza Cardoso
Ronaiza Cardoso

Développeur Javascript depuis 2016, j'ai créé des applications mobiles en utilisant Ionic et React Native. Guitariste et passionné de cuisine.

Read more posts by this author

People who read this post, also found these interesting:

Dropdown caret icon