Ich möchte nur ein Element aus einer Redux-Speicherliste entfernen, sobald es eine bestimmte Anzahl erreicht hat und den neuen Speicher zurückgibt mit dem neuen Wert, aber minus dem ersten Wert in der Liste (array.shift).Wie man ein Element an den Anfang einer Redux-Speicherliste hinzufügt, während das untere Element aus der Liste entfernt wird
Denken Sie an einen Twitter-Stream, der den Laden füllt, also entfernen wir alle sechs Tweets einen Eintrag vom Ende der Liste und fügen einen neuen hinzu.
Code:
// ------------------------------------
// Action Handlers
// ------------------------------------
const ACTION_HANDLERS = {
[INIT_DATA]: (state, action) => {
if (state.length < 5) {
return [ ...state, action.payload.stream ]
} else {
return [ ...state.shift(), action.payload.stream ]
}
},
[DISCONNECT]: (state, action) => ({ ...state, ...action.payload })
}
// ------------------------------------
// Reducer
// ------------------------------------
const initialState = []
export default function twitterStreamReducer (state = initialState, action) {
const handler = ACTION_HANDLERS[action.type]
return handler ? handler(state, action) : state
}
Der obige Code gibt einen neuen Speicher, wenn lentgh> 5 und löscht alle alten Tweets nicht nur die untere.
Irgendwelche Ideen über den besten Weg, es zu tun, ohne den Staat zu mutieren?