2016-05-20 16 views
0

以下が反応更新アドオン

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リデューサによって送信されます。まだ状態は更新されていません。それが原因最初の減速からの複数のリターンに問題がある可能性があります?(私はオブジェクトをループしていますので、?)

答えて

0

はこれを行う代わりに、配列をループ巻き上げ

return update(state,{ 
     projects:{ 
     [target]:{ 
      messages:{ 
      $set:action.data 
      } 
     } 
     } 
    }) 
関連する問題