2017-09-04 53 views
1

我这有减速机:如何在reducer中将数据添加到没有任何id的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: { 
         ...state[action.meta.convId].chat.messages, 
         action.payload 
        } 
       } 
      } 
     }; 
    default: 
     return state; 
} 
} 

,我想给action.payload添加到消息数组的末尾。问题是:当我试图把一个关键负载,像这样:

[action.meta._id]:action.payload 

消息是不是一个数组了,但成为一个对象。所以我不能用map()来循环它。和REDX不会让我推动有效载荷直接阵列,似乎我必须把一个关键... 任何帮助将不胜感激,谢谢:)

回答

1

如果你想你的消息总是一个数组那么你的减速器应该像下面这样:

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; 
    } 
} 
+1

啊哈好吧那么简单!谢谢 !! – Louis

+0

投票我的答案,如果这样的作品! – cdaiga

相关问题