2017-10-23 7 views
0

目標の配列にプッシュをしているようなものが、減速中:オブジェクトから項目を追加、交換、削除することができ。私は新しい項目を追加または交換しようとオブジェクトのような配列に1を既存いたで減速を持って、Reduxの

{123: {...}, 1234: [...}, 12345: {...}}

:ように見える現在どのようなオブジェクト

だから私は持っている:

return { ...state, all: state.all[data.id] = data }

しかし、このすべてがやっているが、全体allオブジェクトを消去し、一つのオブジェクトにそれを設定しています。 .pushの機能をミラーリングするようなものがたくさんあります。

また、更新されたアイテムに対してこれを実行して、オブジェクトリスト内のアイテムを置き換える必要があります。

最後に、私は削除を行う方法を知っていると思いますが、これが正しいことを確認するだけです。

delete state.all[data.id]; 
return state 

答えて

3

まず、状態を変化させません。

const newState = {...state}; 

次に、あなたはそれが

const { all } = newState; 
all[data.id] = data; 

最後にしたいものは何でも新しい状態内のすべての値を更新し、新しいを返します更新された状態

return {...state, ...{ all }}; 
+0

.state、... all} ' –

+0

@TaylorAustinは、オブジェクトにall:{}を追加するのではなく、" all "値の内容を広げます。 – Foxhoundn

+0

さて、更新のために同じ正確なことは正しいでしょうか?これは、リスト内のそのキーを持つ現在のオブジェクトをオーバーライドするためですか?そして私は正しい方法を削除しましたか? –