2016-05-03 7 views
0

私はreduxでアプリケーションをビルドしています。私は、アクションがディスパッチされた後で私のビューが更新されない、reduxのドキュメントで概説された問題に遭遇しました。ドキュメンテーションは、あなたが状態を変更したときにこれが起こることを示唆しています。唯一の問題は、私は私がやったことは、変異と考えられているか理解していない、次のとおりです。なぜこのレデューサーはレビュックスを使用してビューの変更をトリガーしませんか?

case AppConstants.UPDATE_ALL_TIMERS: 
    return action.timers 

これは、しかし、作業を行います。

それだけの値を返すということですどのように
case AppConstants.UPDATE_ALL_TIMERS: 
    let newState = state.map((timer, index) => { 
     return action.timers[index] 
    }); 
    return newState 

あなたの新しい州としての行動は、州を突然変異させると考えられていますか?私は何が欠けていますか?

以下は私のレデューサーの全体で、UPDATE_ALL_TIMERSより前の2つのケースは正常に機能しました。レデューサーはコンビネーションレデューサーと共に使用されており、オブジェクトの配列であるタイマースライスのみを受け取ります。

export default function(state = initialState, action) { 
    switch(action.type) { 
     case AppConstants.ADD_TIMER: 
      let newState = [...state, action.timer]; 
      return newState 
     case AppConstants.UPDATE_TIMER: 
      newState = state.map((timer, index) => { 
       if(index == action.timerID) { 
        const updatedTimer = { 
         ...timer, 
         elapsed: action.elapsed 
        } 
        return updatedTimer 
       } 
       return timer 
      }); 
      return newState 
     case AppConstants.UPDATE_ALL_TIMERS: 
      newState = state.map((timer, index) => { 
       return action.timers[index] 
      }); 
      return newState 
     default: 
      return state 
    } 
} 
+0

あなたの減速のより多くを投稿することができ、そしておそらくアクションの作成者を上の変更されたかどうかを確認するために、深いチェックをしませんか? – markerikson

+0

はい、より多くの文脈がなければ、なぜこれが問題になるのかは明らかではありません。 'timer'値は何か混乱していますか? –

+0

私のレデューサーの全体を追加するように編集しました – hmlee

答えて

0

コンポーネントを投稿できますか?

通常、Storeステートが正しく更新されても、コンポーネントは深くネストされたマップされたプロパティのため再レンダリングされません。

反応-Reduxの値が同様に深くネストされたマップされたオブジェクト

関連する問題