Redux

Posted July 26, 2023 by Rohith and Anusha ‐ 3 min read

In the ever-evolving world of web development, creating complex applications with dynamic user interfaces has become the norm. With such intricacies, efficiently managing application state becomes a daunting task. This is where Redux comes to the rescue. Redux is a predictable state container for JavaScript apps, which helps in maintaining a single source of truth for your application state.

The Need for Redux

  • As web applications grow in complexity, managing state effectively becomes critical.

  • The conventional approach of handling state within individual components can lead to problems like state duplication, inconsistency, and reduced maintainability.

  • Redux, inspired by the Flux architecture, addresses these issues by enforcing a unidirectional data flow pattern.

Key Concepts of Redux

Single Source of Truth

  • Redux follows a single source of truth principle.

  • It means that the entire state of an application is stored in a single JavaScript object called the store.

  • This centralized store enables developers to have a clear and consistent view of the application’s state.

Immutability

  • Redux relies on immutability, which means that the state is read-only.

  • Instead of directly modifying the state, you create new state objects whenever there are changes.

  • This immutability ensures that state changes are tracked efficiently and aids in maintaining predictability.

Actions

  • Actions are plain JavaScript objects that represent an event in your application.

  • These actions carry information about what event occurred and any relevant data.

  • For example, when a user adds an item to a shopping cart, an action might be dispatched with the type ADD_TO_CART and the item’s details.

Reducers

  • Reducers are pure functions responsible for specifying how the application’s state changes in response to actions.

  • They take the current state and an action as input and return a new state object, without modifying the original state.

  • Reducers enable Redux to maintain the principle of immutability.

Store

  • The store is the central hub of Redux.

  • It holds the application’s state, allows access to state through a getState() method, enables state modification using the dispatch(action) method, and registers listeners with subscribe(listener) to respond to state changes.

Middleware

  • Middleware provides a way to extend Redux’s behavior.

  • It sits between the dispatching of an action and the moment it reaches the reducer, allowing developers to apply custom functionality like logging, asynchronous operations, or handling side effects.

The Redux Workflow

Action Creation

To initiate state changes, actions are created using action creators.

An action creator is a function that returns an action object.

For example:

const addToCart = (item) => ({
  type: "ADD_TO_CART",
  payload: item,
});

Dispatching Actions

Actions are dispatched to the Redux store using the dispatch() method:

store.dispatch(addToCart(item));

Reducer Handling

Reducers handle dispatched actions and create a new state based on the current state and the action.

Reducers should be designed to be pure functions with no side effects:

const cartReducer = (state = [], action) => {
  switch (action.type) {
    case "ADD_TO_CART":
      return [...state, action.payload];
    default:
      return state;
  }
};

State Update

The new state generated by the reducer replaces the old state in the Redux store.

Conclusion

  • Redux has revolutionized the way we manage state in modern web applications.

  • By enforcing a unidirectional data flow and promoting immutable state, it enables developers to create predictable and maintainable applications.

  • While Redux might seem overwhelming at first, understanding its core concepts is crucial for harnessing its power effectively.

  • As your applications grow in complexity, embracing Redux will prove to be a wise choice for robust state management.

quick-references blog redux

Subscribe For More Content