3

レデューサーの配列にオブジェクトを追加しようとしています。その後、日付で並べ替えたいと思います(順番に挿入しようとすることはできますが、多かれ少なかれ同じ努力だと思います)。

レデューサーの不変性を処理するために immer を使用しています。

const newState = produce(prevState, (draftState) => {
  console.log(draftState);
  draftState.status = COMPLETE;
  draftState.current.entries.push(json.data);
    if (json.included) draftState.current.included.push(json.included);
});
return { ...initialState, ...newState };

console.log は、これを印刷していることを示しました:

Proxy {i: 0, A: {…}, P: false, I: false, D: {…}, …}
[[Handler]]: null
[[Target]]: null
[[IsRevoked]]: true

draftState.current.entriesだから..イマーを使用して配列をソートする方法がよくわかりません。

どんな提案でも大歓迎です

ありがとう

4

1 に答える 1

3

最初に配列をソートしてから、その順序付けられた配列をに割り当てましたdraftState.current.entries

let sortedEntries = prevState.current.entries.slice();
sortedEntries.push(json.data);
sortedEntries.sort((a, b) => new Date(b?.attributes?.date) - new Date(a?.attributes?.date));
const newState = produce(prevState, (draftState) => {
  draftState.status = COMPLETE;
  draftState.current.entries = sortedEntries;
  if (json.included) draftState.current.included.push(json.included);
});

return { ...initialState, ...newState };
于 2020-08-20T13:19:14.387 に答える