Datenverwaltung in Redux
Im vorherigen Abschnitt haben wir das grundlegende Schema von Redux implementiert und Sie kennen nun die Hauptprinzipien einer Redux-Anwendung. In den nächsten Lektionen werden wir die Funktionalität unserer Produktanwendung erweitern und mit Daten arbeiten.
Da die Anwendung um neue Komponenten
und Routen erweitert wird, lassen Sie uns
eine Sache mit dem Routing erledigen. Öffnen Sie die Produktanwendung,
dann die Datei root.jsx. Importieren Sie
darin die Komponente Outlet und löschen Sie dabei
die Zeilen mit dem Import von ProductsList
und NewProductForm:
import { Outlet } from 'react-router-dom'
Nun wird die Komponente Root
unter dem Root-Pfad '/' angezeigt,
und alle anderen Komponenten
werden in den Kind-Routen im Outlet gerendert. Dazu passen wir
das Markup der #main-page-Div für die Komponente Root leicht an:
<div id="main-page">
<h2>My Products App</h2>
<hr></hr>
<NewProductForm />
<ProductsList />
</div>
Hier setzen wir Outlet anstelle
der Komponenten NewProductForm und
ProductsList ein:
<div id="main-page">
<h2>My Products App</h2>
<hr></hr>
<Outlet />
</div>
Das Formular zum Hinzufügen von Produkten werden wir nun
in ProductsList ausgeben. Lassen Sie uns die
Datei mit dieser Komponente öffnen und den Import des Formulars hinzufügen:
import { NewProductForm } from './NewProductForm'
Und nun fügen wir die Formularkomponente direkt vor der Produktliste hinzu. Nun wird unser Markup so aussehen:
return (
<div>
<NewProductForm />
<div>
<h2>Products</h2>
{dispProducts}
</div>
</div>
)
Ergänzen wir den Stil für die Klasse products-list
in index.css:
.products-list {
display: flex;
flex-direction: column;
}
Es bleibt uns nur noch, Änderungen
in der Hauptkomponente App vorzunehmen. Wir öffnen
App.jsx und importieren darin die Komponente
ProductsList:
import { ProductsList } from './parts/products/ProductsList'
Dann fügen wir für unsere vorerst einzige
Route, die die Root-Route ist, die
Eigenschaft children hinzu:
const router = createBrowserRouter([
{ path: '/', element: <Root />, children: [] },
])
Und schreiben wir als Wert dieser Eigenschaft
die erste Kind-Route. Als Pfad
setzen wir 'products'. Nun wird unter dieser
Adresse unsere Produktliste ProductsList angezeigt:
children: [
{
path: '/products',
element: <ProductsList />,
},
],
Starten wir unsere Anwendung und vergewissern uns, dass
wir nichts kaputt gemacht haben. Im Root '/' sehen wir
nur die Überschrift. Und das Formular sowie die Produktliste
sind unter der Adresse '/products' versteckt.
Öffnen Sie Ihre Studenten-Anwendung.
Ersetzen Sie in der Datei root.jsx die Komponenten
StudentsList und NewStudentForm
durch Outlet.
Lassen Sie nun das Formular zum Hinzufügen eines Studenten
in Ihrer StudentsList angezeigt werden.
Nehmen Sie Änderungen in Ihrer Hauptkomponente
App vor. Fügen Sie zur Root-Route eine Kind-Route
mit dem Pfad '/students' hinzu, unter der
Ihre StudentsList angezeigt wird. Starten Sie die
Anwendung und vergewissern Sie sich, dass bei Ihnen alles
funktioniert.