Redux动作未发送。 TypeError:无效尝试传播不可迭代的实例

问题描述 投票:0回答:1

在我的应用程序中,我想在'event'对象中为数组添加一个'ticket'。在操作中,我将新票证发布到数据库,之后我将操作发送到reducer。通过使用Redux记录器,我能够检索错误:

enter image description here

'createTicket'的动作是这样的:

// actions/tickets.js

export const TICKET_CREATE_SUCCESS = 'TICKET_CREATE_SUCCESS';

const ticketCreateSuccess = tickets => ({
  type: TICKET_CREATE_SUCCESS,
  tickets
});

export const createTicket = (eventId, data) => (dispatch, getState) => {
  const jwt = getState().currentUser.token;
  const id = getState().currentUser.userId;
  const email = getState().currentUser.email;
  const name = getState().currentUser.name;

  request
    .post(`${baseUrl}/events/${eventId}/tickets`)
    .set('Authorization', `Bearer ${jwt}`)
    .send(data)
    .then(response => {
      dispatch(ticketCreateSuccess({ ...response.body, user: { id, email, name } }));
    })
    .catch(error => error);
};

减速机

// reducers/events.js    

import { EVENT_FETCHED } from '../actions/events';
import { TICKET_EDIT_SUCCESS, TICKET_CREATE_SUCCESS } from '../actions/tickets';

export default (state = null, action = {}) => {
  switch (action.type) {
    case EVENT_FETCHED:
      return action.event;
    case TICKET_EDIT_SUCCESS:
      return {
        ...state,
        tickets: state.tickets.map(ticket => {
          if (ticket.id === action.ticket.id) {
            return action.ticket;
          }
          return ticket;
        })
      };
    case TICKET_CREATE_SUCCESS:
      console.log({ ...state, tickets: [...state.tickets, action.tickets] });
      return { ...state, tickets: [...state.tickets, action.tickets] };
    default:
      return state;
  }
};

减速器组合成:

import { combineReducers } from 'redux';

import currentUser from './currentUser';
import events from './events';
import event from './event';
import ticket from './ticket';
import tickets from './tickets';
import numberOfTickets from './numberOfTickets';

export default combineReducers({ currentUser, events, event, ticket, tickets, numberOfTickets });
redux react-redux redux-thunk
1个回答
0
投票

当它的值为null时,你是否试图扩展你的reducer状态:

export default (state = null, action = {}) => {
return {
  ...state, // Here
  // rest
}

你的默认状态应该是一个对象,例如:

const InitialState = {
  tickets: []
};

export default (state = InitialState, action) => {
  // Some code
  case TICKET_CREATE_SUCCESS:
    return {
      ...state,
      tickets: [
        ...state.tickets,
        action.tickets
      ]
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.