In diesem letzten Tutorial unserer React-Serie erstellen wir ein neues
Komponente zum manuellen Hinzufügen neuer Filme über ein benutzerdefiniertes Formular. Damit wird die Entwicklung für die 'Movie Mojo'-App abgeschlossen.
Der Code für das endgültige Projekt kann über den Link auf der rechten Seite des Bildschirms heruntergeladen werden (möglicherweise müssen Sie nach unten scrollen). Später gebe ich Schritt für Schritt Anweisungen, wie Sie das Projekt auf Ihrem System installieren und ausführen können.
Das
Die Komponente gibt ein Formular aus, mit dem Benutzer manuell Details zu einem einzelnen Film eingeben und zu den vorhandenen Filmen in der Galerie hinzufügen können, sobald das Formular gesendet wurde.
Das Formular erfordert drei Texteingaben für Titel, Jahr und Posterbild. plus einen Textbereich für die Filmbeschreibung. Im / src / components /
, Erstellen Sie eine neue Datei mit dem Namen AddMovie.js
und füge folgendes hinzu:
importieren Sie React, Component aus 'reagieren'; Die Klasse AddMovie erweitert die Komponente render () return (); export default AddMovie;
Die Reaktion ref
Attribut speichert einen Verweis auf jedes Formulareingabefeld als Komponentenklasseneigenschaft. Wir werden diese Referenzen in Kürze verwenden, um Eingabefeldwerte einfach zu erfassen.
Fügen Sie jedoch zunächst die folgenden Stile hinzu App.css
Um die Form etwas ästhetischer zu gestalten:
/ * Filmformate * / .Film-Form Breite: 250px; Marge: 0 auto; .Filmformulareingabe, .Filmformularbereich width: 250px; Schriftgröße: 14px; Polsterung: 5px; Marge: 5px; .movie-form button font-size: 16px; Polsterung: 4px; Marge: 10px 10px 30px 10px;
Im Importieren Sie dann oben in der Datei die Ihre 'Movie Mojo'-App sollte jetzt am unteren Rand des Browserfensters ein Formular anzeigen. Wir müssen eine Callback-Methode angeben, die bei jeder Übermittlung des Formulars ausgeführt wird, mit der wir einen neuen Film erstellen können. Fügen Sie dies dem hinzu Dann füge das hinzu Die erste Aufgabe besteht darin, zu verhindern, dass das standardmäßige Übermittlungsereignis ausgelöst wird Anschließend erstellen wir ein neues Filmobjekt, indem wir die Werte des Formulareingabefelds verwenden, die wir früher als Komponentenklasseneigenschaften gespeichert haben. EIN Sobald Sie zufrieden sind Um den neuen Film in unserer Galerie anzuzeigen, müssen wir ihn dem hinzufügen Um dies zu erreichen, erstellen Sie eine neue Methode in Vergessen Sie nicht, die neue Methode an die zu binden Übrigens fragen Sie sich vielleicht, warum wir dies hier tun mussten, aber nicht für die Benutzen Zurück in Wenn wir nun das Formular ausfüllen, wird das Filmobjekt wie zuvor auf der Konsole ausgegeben, diesmal jedoch über die Löschen Sie die Dies ist ziemlich ähnlich zu dem, was wir in Teil drei für das getan haben Dies führt dazu, dass jeder zusätzliche Film, der über das Formular hinzugefügt wird, eindeutige Schlüssel hat. … und so weiter. Öffnen Sie die 'Movie Mojo'-App im Browser und fügen Sie der Galerie über das Formular zwei neue Filme hinzu. Es wurden zusätzliche Filmposterbilder hinzugefügt Jedes Mal, wenn Sie das Formular absenden, wird der Galerie ein zusätzlicher Film hinzugefügt! Klicken Sie auf den Link rechts (ungefähr zur Hälfte der Seite), um die fertige ZIP-Datei des 'Movie Mojo' -Projekts herunterzuladen. Öffnen Sie nach dem Extrahieren ein Befehlszeilenfenster und navigieren Sie zum Es dauert einige Minuten, bis alle für die Ausführung des Projekts erforderlichen 'Node.js'-Module heruntergeladen sind. Dann tippen Sie: Dadurch wird die React-App kompiliert und über einen dedizierten Mini-Webserver in einem Browser geöffnet. Wir haben in dieser vierteiligen Tutorialserie viel behandelt. Glückwunsch, wenn Sie den ganzen Weg durchgemacht und den Code gefolgt haben. Sie sollten sich jetzt mit den Grundlagen von React vertraut machen. Dies gibt Ihnen hoffentlich die Sicherheit, weitere komplizierte Apps zu erstellen. Ich empfehle, das Projekt 'Movie Mojo' herunterzuladen und den Quellcode zu überprüfen, um sicherzustellen, dass Sie verstehen, wie alles zusammenpasst. Es gibt viel Spielraum, um die App zu erweitern. Warum versuchen Sie nicht, ein paar neue Funktionen zu entwickeln? Dies ist auch eine großartige Möglichkeit, Ihr Lernen zu festigen, indem Sie versuchen, neue React-Elemente in die App zu implementieren. Hier sind einige Ideen, die Sie in Betracht ziehen könnten: Ich würde mich freuen, wenn Sie über die folgenden Kommentare Rückmeldungen zu diesem Tutorial erhalten. Fanden Sie es leicht zu folgen oder gab es Teile, mit denen Sie Probleme hatten? Ich bin immer auf der Suche nach besseren Tutorials, daher ist Feedback immer sehr willkommen. Happy React-Codierung!App.js
, Ergänzen Sie die
Komponente innerhalb der Schließung
Komponente zur Verfügung zu stellen.importiere AddMovie von './AddMovie';
Element:
onSubmit = (e) => this.addNewMovie (e)
addNewMovie ()
Methode an die Spitze der
Bauteilklasse:addNewMovie (e) e.preventDefault (); var movie = title: this.title.value, year: this.year.value, Beschreibung: this.description.value, poster: this.poster.value; console.log (Film);
e.preventDefault ()
. Ansonsten, wenn das Formular gesendet wird, wird die Webseite automatisch aktualisiert, was wir nicht möchten.console.log ()
Befehl gibt das aus Film
Objekt, damit wir testen können, dass es bei der Formularübergabe korrekt erstellt wird.Film
Objekt wird korrekt generiert, fahren Sie fort und löschen Sie das console.log ()
Anruf.Film
Zustandsobjekt. Sobald dies geschehen ist, kümmert sich React um die Aktualisierung des DOM für uns.App.js
(wo sich das App-Statusobjekt befindet), um dem aktuellen Status einen Film hinzuzufügen.addMovieToGallery (movie) console.log ('mooooooovie', movie);
diese
Es ist also in der gesamten Klasse verfügbar.this.addMovieToGallery = this.addMovieToGallery.bind (this);
addNewMovie ()
Methode, die wir dem hinzugefügt haben
Komponente oben. Dies ist ein Nebeneffekt der Verwendung einer ES6-Pfeilfunktion, da diese automatisch gebunden wird diese
für dich Dieser kleine Trick ist sehr erwähnenswert, da er die Codekomplexität reduziert und gleichzeitig die Lesbarkeit des Codes verbessert.addMovieToGallery ()
in unserer
Untergeordneter Komponentencode übergeben wir einfach einen Verweis darauf über Requisiten. Im App.js
, Aktualisieren Sie die
anrufen zu sein:AddMovie.js
, Aktualisieren Sie die addNewMovie ()
Methode zum Übergeben des Filmobjekts an addMovieToGallery ()
Methode über die addMovie
Requisite, die wir gerade erstellt haben.addNewMovie (e) e.preventDefault (); var movie = title: this.title.value, year: this.year.value, Beschreibung: this.description.value, poster: this.poster.value; this.props.addMovie (movie);
addMovieToGallery ()
Methode in der
Komponente.console.log ()
Befehl in addMovieToGallery ()
und ersetzen Sie es durch den folgenden Code, um die eingegebenen Filmdetails in das Fenster einzufügen Filme
Zustandsobjekt:addMovieToGallery (movie) var ts = Date.now (); var newMovie = ; newMovie ['movie' + ts] = movie; var currentMovies = … this.state.movies; var newMovies = Object.assign (currentMovies, newMovie); this.setState (movies: newMovies);
loadAdditionalMovies ()
Methode. Der Hauptunterschied besteht darin, dass für jeden zusätzlichen Filmeintrag sofort ein eindeutiger Schlüssel generiert werden muss. Dies wird erreicht, indem der aktuelle Zeitstempel als eindeutiger Schlüssel verwendet und an diesen angehängt wird Film
.movie1501686019706 movie1501686027906 movie1501686032929
./ Öffentlichkeit / Poster /
Ordner, um das Hinzufügen von Filmen zur Galerie zu testen. Sie können auf diese zugreifen, indem Sie das fertige App-Projekt herunterladen.Movie Mojo installieren
Film-Mojo
Verzeichnis und geben Sie ein:npm installieren
npm starten
Fazit