State Management · Senior · Frage 13 von 75
Was braucht ein memoisierter Selektor aus createSelector, um mit Argumenten effektiv zu sein?
const selectByCategory = createSelector(
[(s) => s.products, (s, category) => category],
(products, category) => products.filter((p) => p.category === category),
);- 1Jeden Eingabe-Selektor in
useMemopacken - 2Aus jedem Eingabe-Selektor ein neues Array liefern
- 3Eingabe-Selektoren, die stabile Referenzen liefern
Antwort zeigen
Richtige Antwort: Eingabe-Selektoren, die stabile Referenzen liefern
Erklärung
Der Standard-Cache speichert die letzten Eingaben, wechselnde Argumente in mehreren Komponenten ('books', 'toys') berechnen also jedes Mal neu. Erzeuge einen Selektor pro Komponente (useMemo(makeSelector, [])) oder konfiguriere einen größeren Cache (weakMapMemoize ist in Reselect 5 Standard).