In questo ultimo tutorial della nostra serie React, creeremo un nuovo
componente per l'aggiunta di nuovi film manualmente tramite un modulo personalizzato. Questo porterà lo sviluppo per l'app "Movie Mojo" al termine.
Il codice per il progetto finale è disponibile per il download tramite il collegamento a destra dello schermo (potrebbe essere necessario scorrere verso il basso). Più avanti fornirò le istruzioni dettagliate su come avviare e avviare il progetto sul tuo sistema.
Il
componente emette un modulo per consentire agli utenti di immettere manualmente i dettagli su un singolo film e aggiungerlo ai film esistenti nella galleria una volta che il modulo è stato inviato.
Il modulo richiede tre input di testo per titolo, anno e immagine del poster; più un'area di testo per la descrizione del film. Nel / src / componenti /
, crea un nuovo file chiamato AddMovie.js
e aggiungi il seguente:
import React, Component da 'react'; classe AddMovie estende Component render () return (); esporta AddMovie predefinito;
The React arbitro
attributo memorizza un riferimento a ciascun campo di input del modulo come proprietà della classe componente. Utilizzeremo questi riferimenti a breve come un modo per afferrare facilmente i valori dei campi di input.
Prima di tutto, però, aggiungi i seguenti stili a App.css
per rendere la forma un po 'più estetica:
/ * stili di forma del film * / .movie-form width: 250px; margine: 0 auto; .movie-form input, .movie-form textarea width: 250px; font-size: 14px; imbottitura: 5px; margine: 5px; .movie-form button font-size: 16px; imbottitura: 4px; margine: 10px 10px 30px 10px;
Nel Quindi, nella parte superiore del file, importare il file L'app "Movie Mojo" ora dovrebbe visualizzare un modulo verso la parte inferiore della finestra del browser. Abbiamo bisogno di specificare un metodo di callback che viene eseguito ogni volta che viene inviato il modulo, che possiamo usare per creare un nuovo film. Aggiungi questo al Quindi, aggiungi il Il primo compito è impedire l'attivazione dell'evento di invio predefinito, cosa che facciamo con Quindi, creiamo un nuovo oggetto film catturando i valori dei campi di input del modulo che abbiamo opportunamente memorizzati come proprietà della classe del componente in precedenza. UN Una volta che sei soddisfatto Per visualizzare il nuovo film nella nostra galleria, è necessario aggiungerlo al Per fare ciò, crea un nuovo metodo in Non dimenticare di associare il nuovo metodo a Per inciso, potresti chiederti perché abbiamo dovuto farlo qui, ma non per il Usare Di nuovo dentro Ora, quando compiliamo il modulo, otteniamo l'oggetto film emesso sulla console, come prima, ma questa volta è tramite il Elimina il Questo è molto simile a quello che abbiamo fatto nella parte tre per il Ciò comporterà ogni film aggiuntivo, aggiunto tramite il modulo, con chiavi univoche. … e così via. Apri l'app "Movie Mojo" nel browser e aggiungi due nuovi film alla galleria tramite il modulo. Ci sono ulteriori immagini di poster di film aggiunte al Ogni volta che si invia il modulo, viene aggiunto un film aggiuntivo alla galleria! Fare clic sul collegamento a destra (a circa metà della pagina) per scaricare il file zip del progetto "Movie Mojo" completato. Una volta estratto, apri una finestra della riga di comando e vai a Ciò richiederà alcuni minuti per scaricare tutti i moduli "Node.js" necessari per eseguire il progetto. Quindi digitare: Questo compilerà l'app React e la aprirà in un browser tramite un mini server web dedicato. Abbiamo già parlato molto in questa serie di tutorial in quattro parti, quindi congratulazioni se hai completato tutto e seguito il codice. Ora dovresti sentirti a tuo agio con le basi di React e spero che questo ti dia la sicurezza di andare avanti e creare app più complicate. Consiglierei di scaricare il progetto "Movie Mojo" e di esaminare il codice sorgente per assicurarmi di aver capito come si integri. C'è molto spazio per estendere l'app, quindi perché non provare a trovare nuove funzionalità extra? Questo è anche un ottimo modo per cementare il tuo apprendimento, tentando di implementare nuovi elementi React nell'app. Ecco alcune idee che potresti considerare di aggiungere: Mi piacerebbe sentire qualsiasi feedback che potresti avere su questo tutorial tramite i commenti qui sotto. Hai trovato facile seguire, o c'erano parti con cui hai lottato? Cerco sempre di migliorare le mie esercitazioni, quindi il feedback è sempre molto gradito. Happy React!App.js
, Aggiungi il
componente all'interno della chiusura
componente per renderlo disponibile.importare AddMovie da './AddMovie';
elemento:
onSubmit = (e) => this.addNewMovie (e)
addNewMovie ()
metodo alla cima del
classe componente:addNewMovie (e) e.preventDefault (); var movie = title: this.title.value, year: this.year.value, description: this.description.value, poster: this.poster.value; console.log (film);
e.preventDefault ()
. Altrimenti, quando il modulo viene inviato, la pagina web si aggiornerà automaticamente, il che non è ciò che vogliamo.console.log ()
il comando emette il film
oggetto in modo che possiamo verificare che sia stato creato correttamente al momento dell'invio del modulo.film
oggetto è stato generato correttamente, andare avanti e cancellare il console.log ()
chiamata.film
oggetto di stato. Fatto ciò, React si prenderà cura dell'aggiornamento del DOM per noi.App.js
(dove risiede l'oggetto dello stato dell'app) per gestire l'aggiunta di un film allo stato corrente.addMovieToGallery (movie) console.log ('mooooooovie', film);
Questo
quindi è disponibile in tutta la classe.this.addMovieToGallery = this.addMovieToGallery.bind (this);
addNewMovie ()
metodo che abbiamo aggiunto al
componente sopra. Questo è un effetto collaterale dell'uso di una funzione freccia ES6, poiché si lega automaticamente Questo
per te. Questo piccolo trucco merita di essere ricordato poiché riduce la complessità del codice e migliora la leggibilità del codice.addMovieToGallery ()
nel nostro
codice componente figlio, semplicemente passiamo un riferimento ad esso tramite oggetti di scena. Nel App.js
, aggiorna il
chiamare per essere:AddMovie.js
, aggiorna il addNewMovie ()
metodo per passare l'oggetto film al addMovieToGallery ()
metodo tramite il AddMovie
prop abbiamo appena creato.addNewMovie (e) e.preventDefault (); var movie = title: this.title.value, year: this.year.value, description: this.description.value, poster: this.poster.value; this.props.addMovie (film);
addMovieToGallery ()
metodo nel
componente.console.log ()
comando in addMovieToGallery ()
e sostituirlo con il seguente codice per aggiungere i dettagli del film inserito a film
oggetto di stato:addMovieToGallery (filmato) var ts = Date.now (); var newMovie = ; newMovie ['movie' + ts] = film; var currentMovies = ... this.state.movies; var newMovies = Object.assign (currentMovies, newMovie); this.setState (movies: newMovies);
loadAdditionalMovies ()
metodo. La differenza principale è che una chiave univoca deve essere generata, al volo, per ogni filmato aggiuntivo. Ciò si ottiene utilizzando il timestamp corrente come chiave univoca e aggiungendolo a film
.movie1501686019706 movie1501686027906 movie1501686032929
./ Public / manifesti /
cartella per comodità, in modo da poter facilmente testare l'aggiunta di filmati alla galleria. Puoi accedervi scaricando il progetto finito dell'app.Installazione di Movie Mojo
film-mojo
directory e immettere:installazione di npm
inizio di npm
Conclusione