私の減速は、次のようになります。Redux Reducer - 状態を変更せずにオブジェクト値を更新するには?
const players = (state = {}, action) => {
switch (action.type) {
case 'UPDATE_PLAYERS_CARDS':
return Object.assign({}, state, {
[action.player]: {
name: state[action.player].name,
score: state[action.player].score,
cards: action.cards
}
})
default:
return state
}
}
export default players
基本的に、私は選手カードを更新したいが、私は名前とスコアが含まれていない場合は、それらを新しい状態に削除されます。
理想的に私はちょうどこのような何かをする必要があります:state[action.player].cards = action.cards
しかし、規則の1つは、を決してに変更することです。
上記の方法はうまくいきますが、データ構造を常に知っている必要がありますので、今後別のものを追加する場合は、このレデューサーに戻ってそれを追加してくださいそれを失わないでください。
これを実行するより良い方法はありますか?
編集:複数のオブジェクト割り当てに関する提案のためにVijayに感謝します。私はこれでうまくいくようになりました。
case 'UPDATE_PLAYERS_CARDS':
const playerObject = Object.assign(state[action.player], { cards: action.cards });
return Object.assign({}, state, {
[action.player]: playerObject
});
これはどうですか?私ができる改善があれば教えてください。
リアクションのネイティブでimmutable.jsとreadupが使用されている可能性があります。https://facebook.github.io/react/docs/update.html – dandavis
バーベルを使用していますか?あなたは 'stage-2'プリセットを有効にしていますか?ありがとうVijay。 – QoP