0
的下面是從CONSOLE.LOG無法使用來更新Redux的狀態做出反應更新附加
state:{getMessagesRequest: false,projects:[]}
項目陣列具有以下結構
{messages:Array[0],userid:'foo',username:'bar'}
減速器推消息對象的對象我的減速狀態成使用下面的情況下,消息數組:
case GET_PROJECT_MESSAGES_SUCCESS:
console.log('GET_PROJECT_MESSAGES_SUCCESS invoked: ',action)
let target = state.projects.findIndex((project) => {
return project.project_id == action.project_id
})
action.data.map((message) => {
console.log('TARGET IS : ',target)
console.log('MESSSAGE IS: ',message)
return update(state,{
projects:{
[target]:{
messages:{
$push:[message]
}
}
}
})
})
的console.log示出了用於噸的有效值ARGET(目標= 0)和消息(這是一個對象)
但減速機示出了以下錯誤
Uncaught TypeError: Cannot read property 'messages' of undefined
這表明其對[靶標] ..但目標斷裂具有正確的值,以便我不確定問題可能在哪裏。
我有一個額外的reducer差不多做一個類似的事情,但我只有一個消息對象推送到項目數組。減速機在這種情況下工作:
case NEW_CHAT_MESSAGE: //use parseInt instead of ==
target = state.projects.findIndex((project) => {
return project.project_id == action.data.projectid
})
return update(state,{
projects:{
[target]:{
messages:{
$push:[action.data]
}
}
}
})
action.data
是一個對象。第一個reducer處理一個對象數組 - 因此是map函數。
問題在哪裏?
更新:它很奇怪,但第二減速NEW_CHAT_MESSAGE
一次GET_PROJECT_MESSAGES_SUCCESS
執行完成後也被調用。該錯誤是由new_chat減速器發送的。該州仍然沒有得到更新。難道是一個問題,由於來自第一減速器的多個返回?(因爲我遍歷對象?)