React Redux как добавить данные в массив объекта

#reactjs #react-redux

Вопрос:

Моя структура пользователей такова:

пользователь = { электронная почта: ‘электронная почта’, карточки: [] }

И я хотел бы добавить данные в массив карточек пользователя (используя redux)

Мой пользователь-редуктор

 import { UserActionTypes } from './user.types';

const INITIAL_STATE = {
  currentUser: null,
};

// GETS STATES OBJ AND RECIVES AN ACTION
const userReducer = (state = INITIAL_STATE, action) => {
  switch (action.type) {
    case UserActionTypes.SET_CURRENT_USER:
      return {
        ...state, 
        currentUser: action.payload, 
      };
    case UserActionTypes.ADD_FLASHCARD:
      return {
        ...state,
        currentUser: action.payload,
      };

    default:
      return state;
  }
};
export default userReducer;
 

действия пользователя

 export const addFlashCard = user => ({
  type: UserActionTypes.ADD_FLASHCARD,
  payload: user.flashcards,
});
 

И когда я это делаю, моя полезная нагрузка не определена.

Не могли бы вы дать мне несколько советов?

Комментарии:

1. как вы отправляете свое действие addFlashCard . не могли бы вы также добавить этот код ?

2. Консоль.войдите(пользователь) в функцию действия, чтобы увидеть, верны данные или нет.

Ответ №1:

В настоящее время вы перезаписываете currentUser значение user.flashcards из действия redux. Чтобы добавить новые карточки, ADD_FLASHCARD ветвь вашего редуктора должна выглядеть примерно так:

 case UserActionTypes.ADD_FLASHCARD:
  return {
    ...state,
    currentUser: {
      ...state.currentUser,
      flashcards: [
        ...state.currentUser.flashcards,
        ...action.payload
      ]
    }
  };

 

Комментарии:

1. В этом-то и был смысл. Я не знал, как управлять состоянием в редукторе..