state:{getMessagesRequest: false,projects:[]}
プロジェクト・アレイは、減速がメッセージオブジェクトを押圧
{messages:Array[0],userid:'foo',username:'bar'}
以下の構造のオブジェクトを有するCONSOLE.LOGから私の減速状態であります
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
を示します私はどこに問題があるのか分からない。
私は同様のことをやっているレデューサーをもう少し持っていますが、プロジェクト配列にプッシュするメッセージオブジェクトは1つだけです。この場合減速機は次のように動作します。
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
が対象です。最初の減速器はオブジェクトの配列を扱います - マップ関数です。
どこに問題がありますか?
更新:そのかなり奇妙なもののGET_PROJECT_MESSAGES_SUCCESS
の実行が完了すると第二減速NEW_CHAT_MESSAGE
も呼び出されます。エラーはnew_chatリデューサによって送信されます。まだ状態は更新されていません。それが原因最初の減速からの複数のリターンに問題がある可能性があります?(私はオブジェクトをループしていますので、?)