⊗jsrxPmSDSSC 35 of 57 menu

Änderung der Redux-Statusstruktur

Die erste Phase, die wir implementieren werden für die Interaktion unserer Redux-Anwendung mit einem externen Server - ist das Abrufen von Daten, die auf ihm gespeichert sind, beim Start der Anwendung. Aber zuvor lassen Sie uns einige Änderungen in unsere Anwendung vornehmen.

Öffnen wir unsere Produktanwendung und darin die Datei productsSlice.js. Beachten Sie die Definition von initialState. Ursprünglich ist unser Slice mit Produkten productsSlice - ein Array, in dem sich Objekte (in unserem Fall zwei) mit Daten der Produkte befinden. Erstens, da wir sie nun vom Server laden werden, müssen wir sie aus dem initialState entfernen. Zweitens werden wir API-Anfragen an den Server senden und es wird für uns wichtig sein, deren Status zu kennen. Unter Berücksichtigung dieser beiden Dinge, lassen Sie uns initialState umbauen. Lass es jetzt einfach ein Objekt mit den Feldern products sein (zunächst werden hier keine Daten vorhanden sein, sondern nur ein leeres Array), status und error. Jetzt wird unser Code für initialState etwas kürzer:

const initialState = { products: [], status: 'idle', error: null, }

Vorerst haben wir den Status auf 'idle' gesetzt (Untätigkeit), da wir anfänglich keine Anfragen senden, aber insgesamt wird er sich ändern und kann Werte wie 'loading', 'succeeded', 'failed' annehmen. Denken Sie daran, dass Sie für die Bezeichnung des Status die Namen wählen können, die für Sie bequem sind.

Gehen wir im Code weiter nach unten. Nach der Änderung des initialState sollten wir auch den Code ändern, in dem wir mit diesem Status in den Reducer-Funktionen arbeiten. Schauen wir uns den Code für productAdded an:

state.push(action.payload)

Jetzt werden wir neue Produkte nicht einfach in den state für Produkte ablegen, sondern in seine Eigenschaft state.products. Deshalb ersetzen wir die oben genannte Zeile durch:

state.products.push(action.payload)

Dementsprechend nehmen wir die gleichen Änderungen für den Reducer reactionClicked vor. Anstatt:

const currentProduct = state.find((product) => product.id === productId)

Jetzt wird es:

const currentProduct = state.products.find((product) => product.id === productId)

Ersetzen Sie selbst state durch state.products im Code des Reducers productUpdated.

Öffnen Sie Ihre Studentenanwendung. Öffnen Sie darin die Datei studentsSlice.js. Lassen Sie nun Ihren initialState drei Eigenschaften haben: students, status, error - bauen Sie ihn um, wie in der Lektion gezeigt.

Nehmen Sie die entsprechenden Änderungen auch weiter unten im Code vor. Ersetzen Sie state durch state.students im Code für Ihre drei Reducer-Funktionen.

bydeenesfrptru