Get previous and current state in Redux's reducer

Viewed 512

I start to study Redux. In my app i have a button. I push in this btn and get an object. This object income to reducer in action.payload. Object change everytime, when i push in the button. How i can save all previous state in reducer, and add the current state? To make something like that:

 if (action.type === "ADD_ITEM") {
        return {
          items: [all previous state, + current state],
        };
      }

All code in reducer

const initialState = {
  items: [],
};

const basket = (state = initialState, action) => {
  if (action.type === "ADD_ITEM") {
    return {
      items: [action.data],
    };
  }
  return state;
};

export default basket;
2 Answers

You can access the prev value before updating it (and you can save it), and as you know you can update it with an action

If you want to append new data into an array you can shallow copy the existing state array and append the new data to the end.

const initialState = {
  items: [],
};

const basket = (state = initialState, action) => {
  if (action.type === "ADD_ITEM") {
    return {
      ...state,         // shallow copy existing state
      items: [
        ...state.items, // shallow copy existing items
        action.data,    // append new data
      ],
    };
  }
  return state;
};
Related