API からデータを取得し、redux にダンプする前に normalizr に渡します。API から人物データを取得すると、リデューサーはそれらを人物ストアに追加する必要があります。現在、レデューサーはストア内の既存のデータをすべて上書きしています。
レデューサー:
export default function reducer(state={
people: {
entities : {
people: {
0 : {
name : ''
}
}
},
result : [0,]
}
}, action) {
switch (action.type) {
case "GET_PEOPLE": {
const newpPeople = {...state.people, ...action.payload };
console.log(state.people)
console.log(action.payload)
console.log(newpPeople)
return {...state, people : newpPeople};
}
default :
return state
}
}
この最初のコンソール ログは、reducer が 1 回使用された後の状態です。それは私が店に保存した人々の初期セットを持っています:
{
entities: {
people : {
1 : { id: 1, name: "jim" },
2 : { id: 2, name: "billy" }
}
},
result : [ 1, 2 ]
}
2 番目のコンソール ログは、追加される新しいユーザーのペイロードになります。
{
entities: {
people : {
7 : { id: 7, name: "sally" },
8 : { id: 8, name: "ana" }
}
},
result : [ 7, 8 ]
}
次に、3 番目のコンソール ログは 2 つの状態を組み合わせたものである必要がありますか? しかし、それはサリーとアナで最後のものを繰り返すだけで、他のすべてを上書きします.