Open In App

Getting Started with Redux

Last Updated : 04 Mar, 2024
Improve
Improve
Like Article
Like
Save
Share
Report

Redux is a popular state management library for JavaScript applications. It provides a way to centralize the state of an application in a single store, making it easier to debug, test, and reason about the state changes in the application. It helps to manage complex application states, making it easier to handle data flow and interactions.

In this article, we’ll go over the basics of Redux and explore how it simplifies state management.

The following fundamental concepts are discussed in this article:

What is Redux?

Redux is a state managing library used in JavaScript apps. It simply manages the state of your application or in other words, it is used to manage the data of the application. It is used with a library like React.

Setting Up Redux in a React App

  1. Store Creation
  2. Action Creation
  3. Dispatching Actions
  4. Reducer Functions
  5. Combining Reducers
  6. Connecting to React Component

1. Store Creation in Redux

To build a Redux store, developers use the redux library’s createStore function and send in a root reducer as an argument. A root reducer is a collection of reducers that describe how the state in an application changes. Here’s an illustration of a store built in Redux:

Javascript




import { createStore } from 'redux'
import rootReducer from './reducers';
 
// Create the redux store by calling createStore
// and passing in the root reducer
const store = createStore(rootReducer);


2. Action Creation in Redux

Redux actions are simple objects that explain changes to the state. Developers define an object with a type property and any other data required to describe the change to make an action. Here’s an illustration of how to make an action in Redux:

Javascript




// Define a action creator function that
// takes test as an argument and returns
// an action object.
 
const addTodo = (text) => {
    return {
 
        // Describes the action to be taken
        type: 'ADD_TODO',
        text
    };
};


3. Dispatching Actions in Redux

To dispatch an action and update the state, developers call the dispatch method on the store and pass in the action as an argument. Here is an example of dispatching an action in Redux:

Javascript




// Dispatch the addTodo action by calling
// store.dispatch and passing in the action
store.dispatch(addTodo('Learn Redux'));


4. Reducer Functions in Redux

Redux reducers are pure functions in Redux that accept the current state and an action and return the next state. Here’s an example of a Redux reducer function:

Javascript




// Define a reducer function that accepts the
// current state and an action and return the
// next state
 
const todoReducer = (state = [], action) => {
 
    // To handle different action types
    switch (action.type) {
 
        // For the ADD_TODO action type
        case 'ADD_TODO':
            return [
 
                // Create a new array with the
                // existing todos
                ...state,
                {
                    // Add a new todo with the text
                    // from the action
                    text: action.text,
 
                    // Set the completed property
                    // to false
                    completed: false
                }
            ];
        default: // For any other action types
            return state;
    }
};


5. Combining Reducers in Redux

If an application has multiple reducers, developers can use the redux library’s combineReducers function to combine them into a single root reducer. Here’s an example of how to combine reducers in Redux

Javascript




// Combine multiple reducers into a single
// root reducer using combineReducers
 
import { combineReducers } from 'redux';
const rootReducer = combineReducers({
    todos: todoReducer,
    visibilityFilter: visibilityFilterReducer
});


6. Connecting Components to Redux

Developers use the react-redux library’s connect function to connect a Redux store to React components. Here’s an example of a Redux store being linked to a React component:

Javascript




// Connect a Redux store to a react component
// using the connect 
 
import { connect } from 'react-redux';
 
// Define functional components that accepts
// todos as a prop
const TodoList = ({ todos }) => (
    <ul>
        /* map over the todos array to render
        each todo */
        {todos.map((todo, index) => (
            <li key={index}>{todo.text}</li>
        ))}
    </ul>
);
const mapStateToProps = (state) => {
    return {
        // Specify which properties should
        // be mapped to props
        todos: state.todos
    };
};
export default connect(mapStateToProps)(TodoList);


Output:

Simplify State using Redux in React Example - Output

Output



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads