Open In App

What is Redux Thunk?

Redux Thunk is like a co-worker for Redux, giving it the power to handle asynchronous actions. It’s that extra tool that allows your Redux store to deal with things like fetching data from a server or performing tasks that take some time. With Redux Thunk, your app can smoothly manage both synchronous and asynchronous operations.

Prerequisites

What is Redux Thunk?

Example: Suppose you are building a weather app using React and Redux. For this app you want to display the current temperature, but fetching this data from a weather API takes some time.



Without Redux Thunk:




// Fist is to Action Creator
const fetchTemperatureRedux = () => {
  // This won't work without Redux Thunk for asynchronous operations
  return {
    type: 'FETCH_TEMPERATURE',
    payload: fetch('https://api.weather.com/current-temperature')
  };
};

With Redux Thunk:






// Action Creator using Redux Thunk
const fetchTemperatureRedux = () => {
  return async (dispatch) => {
    // Now you can perform asynchronous operations with Redux Thunk
    try {
    // Let's take one example URL
      const response = await fetch('https://api.weather.com/current-temperature');
      const data = await response.json();
 
      dispatch({
        type: 'FETCH_TEMPERATURE',
        payload: data.temperature
      });
    } catch (error) {
      dispatch({
        type: 'FETCH_ERROR',
        payload: 'Failed to fetch temperature data'
      });
    }
  };
};

In the first example without Redux Thunk, the action creator returns an object, but it won’t handle asynchronous operations like fetching the current temperature.

In the second example with Redux Thunk, the action creator returns a function. This function receives dispatch as an argument, allowing you to perform asynchronous operations (like fetching data) before dispatching the actual action. Redux Thunk enables you to handle real-world scenarios, like fetching data from an API and gracefully dealing with errors.

Advantages of React Thunk:

Disadvantages of React Thunk:


Article Tags :