如何将数据添加到redux状态数组中,而没有还原器中没有任何ID



我有这个还原器:

import { GET_CHAT, ADD_MESSAGE } from '../actions';
export default function (state = null, action) {
switch (action.type) {
    case GET_CHAT:
        return { ...state, [action.meta.id]: action.payload.data };
    case ADD_MESSAGE:
        console.log(state[action.meta.convId].chat.messages)
        return {
            ...state,
            [action.meta.convId]: {
                ...state[action.meta.convId],
                chat: {
                    ...state[action.meta.convId].chat,
                    messages: {
                        ...state[action.meta.convId].chat.messages,
                        action.payload
                    }
                }
            }
        };
    default:
        return state;
}
}

我想将action.pare.parload添加到消息数组末尾的位置。问题是:当我尝试为有效载荷打个钥匙时:

[action.meta._id]:action.payload

消息不再是一个数组,而是成为对象。因此,我无法使用Map()再循环它。Redux不会让我将有效载荷直接推到数组中,似乎我必须放一个钥匙...感谢任何帮助,谢谢:)

如果您希望您的消息始终是一个数组,那么您的还原器应该如下:

import { GET_CHAT, ADD_MESSAGE } from '../actions';
export default function (state = null, action) {
  switch (action.type) {
    case GET_CHAT:
       return { ...state, [action.meta.id]: action.payload.data };
    case ADD_MESSAGE:
        console.log(state[action.meta.convId].chat.messages)
        return {
           ...state,
           [action.meta.convId]: {
               ...state[action.meta.convId],
               chat: {
                  ...state[action.meta.convId].chat,
                  messages: [                                //USE SQUARE BRACKETS INSTEAD
                    ...state[action.meta.convId].chat.messages,
                    action.payload
                  ]
               }
          }
        };
    default:
      return state;
    }
}

最新更新