2017-07-13 6 views
0

後、私は、減速機の下に最初の実行後にストアを更新しないとのトラブルを抱えている:私の他の減速が素晴らしい働いているReduxの文句を言わない更新ストア最初の実行(これだけ減速)

switch (action.type) { 
    case "SET_STARRED": 

    let starred = action.bucket.starred; 
    let active = action.bucket.active; 

    console.log("STA ", starred); 
    console.log("ACT ", active); 

    return{ 
     ...state, starred: starred, 
     ...state, active: active 
    } 

    default: 
    return state 
} 

、これはの一つでありますもっと単純なものだから... 最初の実行はストアを細かく設定し、それぞれのリデューサは予想どおりにログを記録しますが、ストアは変更されません。

私は何か愚かなことをしましたか?

私はチェックして、フィードされたデータは各実行のフォーマットにおいて同じように見え、1回だけ(上書きされていると思われる)実行されます。

答えて

2

...stateが2回あるようですので、starredフィールドの更新が古い値で上書きされる可能性が非常に高いです。サイドノートとして

は、あなたがES6の構造化代入を使用して、そのコードに少しだけを簡略化することができ、(すでに使用しているオブジェクトのスプレッド構文と一緒に行くために)リテラル構文オブジェクト:

const {starred, action} = action.bucket; 

return { 
    ...state, 
    starred, 
    active 
}; 
+0

ありがとうございました、それは私が過去に間違っていた場所を考えさせました。 –

1

がこれを返す試してみてください

return Object.assign({}, state, 
    { 
     starred: starred, 
     active: active 
    } 
) 

これは状態のコピーを返しますが、 'starred'属性と 'active'属性は新しい値で置き換えられます。

+0

ありがとう、それはきれいです。 –

関連する問題