3

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 つの状態を組み合わせたものである必要がありますか? しかし、それはサリーとアナで最後のものを繰り返すだけで、他のすべてを上書きします.

4

1 に答える 1