Nella prima parte di questa serie di tutorial, abbiamo usato il Create-reagiscono-app
strumento per creare un'app campione di lavoro come punto di partenza per la nostra app gallery "Movie Mojo".
Nella seconda parte, faremo i conti con l'aggiunta del nostro primo componente personalizzato per visualizzare le singole schede del film. Vedremo anche come l'utilizzo degli oggetti di scena ci consente di personalizzare l'aspetto dei componenti trasmettendo i dati anziché codificarli con cura.
Ciò dimostra la flessibilità e la riusabilità dei componenti e il modo in cui possono essere utilizzati come elementi costitutivi potenti nelle app React.
OK, creiamo un componente! Per cominciare, manterremo le cose abbastanza semplici e refactoring l'intestazione HTML nel proprio componente.
Le best practice Modern React consigliano di separare ciascun componente della tua app in un file separato. Seguiremo questo principio così, nei tuoi progetti / src / componenti /
cartella, crea un nuovo file chiamato Header.js
e aprilo in un editor di testo.
Nella parte superiore dei file dei componenti iniziamo sempre con l'importazione delle librerie richieste, degli altri componenti (dato che possiamo annidare i componenti) e delle risorse extra di cui abbiamo bisogno (ad esempio, gli stili). Il importare
la dichiarazione fa parte di ES6 e ci consente di mantenere i nostri progetti altamente modulari.
Per noi
componente, abbiamo solo bisogno di importare la libreria React, che possiamo fare con questa affermazione:
import React, Component da 'react';
Questo importa l'intera libreria React e la rende disponibile tramite Reagire
variabile. Importa anche il Componente
oggetto direttamente in modo che possiamo usarlo senza dover specificarlo in modo specifico con un precedente Reagire.
riferimento all'oggetto.
In altre parole, se non abbiamo importato esplicitamente il file Componente
oggetto quindi dovremmo accedervi come segue:
React.Component
Ma perché abbiamo importato Componente
direttamente, possiamo semplicemente usarlo da solo senza alcun riferimento al Reagire
variabile. Non importa quale si usa, e dipende solo dalle preferenze.
Quindi, per creare effettivamente il componente, estendiamo il Componente
oggetto di creare una nuova classe che definisce il nostro
componente. Dopo il importare
dichiarazione, tipo:
l'intestazione di classe estende l'app predefinita di Component ;
Qui, usiamo una classe ES6 come contenitore dei componenti. Le classi sono un ottimo modo per incapsulare tutto il codice necessario per descrivere il tuo componente.
Potresti anche aver notato che il file del componente termina con una dichiarazione di esportazione. Questo, come ci si potrebbe aspettare, esporta il nostro componente e lo rende disponibile per altri file nel nostro progetto.
Come minimo, tutti i componenti di React devono avere un metodo render, che restituisce alcuni markup. Questo potrebbe essere HTML, altri componenti React o una combinazione di entrambi.
Aggiungi questo all'interno della classe del tuo componente:
render () return React.createElement ('div', null, 'Ciao, questo è un componente React!');
Il Per utilizzare un componente React all'interno di un altro componente, dobbiamo prima importarlo, quindi aggiungilo all'elenco delle istruzioni di importazione nella parte superiore di Nota come non è necessario aggiungere il In effetti, se provi ad usare Ora possiamo aggiungere il Quindi questo non è permesso: Se vuoi restituire più elementi, devi avvolgerli tutti all'interno di un singolo elemento wrapper: Quindi assicurati di aggiungere il Benvenuti nell'app React "Movie Mojo"! Questo risulterà nel nostro Per completare il Tuttavia, potresti aver notato che c'è un problema. Nel La risposta è JSX. Nel Ecco come scrivere componenti React senza JSX. In realtà, sotto la cappa, questo è ciò che JSX è compilato prima che possa essere reso al browser. Non è necessario utilizzare JSX affatto per i componenti di React; dipende interamente da te. Ma quasi tutti i componenti che incontrerai saranno scritti in JSX perché è molto più facile scrivere. È anche altamente leggibile per gli altri nuovi sul tuo codice. Immagina di dover studiare un progetto React contenente dozzine di componenti diversi scritti in un semplice JavaScript! Quindi non dovrebbe sorprendere che useremo JSX per le definizioni dei componenti per tutto il resto di questa serie di tutorial. Vai avanti e sostituisci il Mentre JSX ci consente molta più flessibilità nello scrivere i nostri componenti, tieni presente che non è l'HTML vero che stiamo scrivendo, ma un'astrazione di esso. Puoi vederlo nello snippet di codice qui sopra. Avviso nel Analizziamo anche gli stili di intestazione. Aperto Questo aggiorna il colore di sfondo dell'intestazione e riduce l'altezza. Finora, il nostro Pensa agli oggetti componenti come simili ai tag HTML. Ad esempio, a Possiamo fare lo stesso per i componenti React. Diciamo che non volevamo che la nostra intestazione producesse il testo fisso "Scopri il tuo film Mojo!" tutto il tempo. Non sarebbe meglio se la nostra intestazione potesse visualizzare qualsiasi testo? A differenza degli attributi HTML, possiamo nominare i nostri puntelli componenti come preferiamo. Dentro Quindi, aggiorna il Ciò si traduce nella nostra intestazione che visualizza qualsiasi testo viene aggiunto al Diamo uno sguardo più da vicino a come abbiamo fatto riferimento al Le parentesi graffe dicono semplicemente a JSX che abbiamo alcuni JavaScript che vogliamo valutare. Questo lo distingue dal testo. Se non abbiamo usato parentesi graffe, la stringa letterale Il Nostro Questa è una buona notizia quando si sviluppano le future app React in quanto è possibile riutilizzare componenti da progetti precedenti in modo da non dover scrivere tutto da zero. Abbiamo usato puntelli sopra per passare una stringa fissa nel Per inviare una variabile tramite oggetti di scena, potremmo fare qualcosa di simile, dove È disponibile uno strumento molto utile per il browser Chrome che consente di esaminare le informazioni sulla tua app React. Gli strumenti di sviluppo predefiniti consentono solo di visualizzare normali elementi HTML, ma con l'estensione React Developer Tools installata, puoi navigare tra tutti i componenti React nella tua app. Una volta installato, apri gli strumenti di ispezione del browser e fai clic sul nuovo disponibile Reagire scheda. Nota che al posto degli elementi HTML, puoi vedere la gerarchia dei componenti React nella tua app. Clicca sul Una volta selezionato, le informazioni su un componente vengono visualizzate nella finestra a destra. Il Gli strumenti di sviluppo di React sono molto utili per il debug, specialmente quando si inizia a sviluppare applicazioni React più complesse, quindi vale la pena di abituarsi a utilizzarle in app più semplici. Puoi anche utilizzare gli strumenti di sviluppo di React per verificare lo stato dell'applicazione, che esamineremo nel prossimo tutorial. In questo tutorial hai imparato come suddividere la tua app in componenti separati per renderla più modulare. I puntelli dei componenti consentono di trasferire i valori ai singoli componenti, in modo simile a come si aggiungono gli attributi agli elementi HTML. Abbiamo anche visto come sfruttare i nuovi strumenti di ispezione del browser per esaminare i componenti e i dati degli oggetti di scena. Nella terza parte aggiungeremo lo stato alla nostra app per aiutarci a gestire i nostri dati in modo più efficace.React.createElement ()
metodo crea un elemento HTML (a Header.js
e apri App.js
.App.js
:importare l'intestazione da "./Header";
.js
estensione del file come questo è assunto. Inoltre, perché il
componente è nella stessa cartella del nostro
componente, non è necessario specificare il percorso completo.importare l'intestazione da "./components/Header";
dall'interno App.js
, riceverai un errore di compilazione.
componente all'interno dell'istruzione return, proprio come qualsiasi elemento HTML. Tuttavia, vi è un avvertimento. Puoi solo restituire un elemento di primo livello all'interno di un metodo di ritorno dei componenti.render () return ( );
render () return (
componente all'interno del la classe App estende Component render () return (
Scopri il tuo film Mojo!
componente in fase di rendering.
componente, rimuoveremo il seguente blocco di HTML da App.js
e aggiungilo a Header.js
.Scopri il tuo film Mojo!
App.js
il
il metodo di rendering dei componenti restituisce ciò che sembra HTML. Ancora dentro Header.js
c'è solo una chiamata a React.createElement ()
. Cosa sta succedendo?App.js
usiamo JSX per scrivere la sintassi simile a HTML per definire il nostro output di componente. Confronta questo con la nostra definizione di componente per Header.js
.React.createElement ('div', null, 'Ciao, questo è un componente React!');
React.createElement ()
chiamare con l'equivalente JSX da cui abbiamo copiato App.js
. Il tuo Header.js
il file dovrebbe ora assomigliare a questo:import React, Component da 'react'; l'intestazione della classe estende Component render () return (
Scopri il tuo film Mojo!
nome della classe
piuttosto che classe
per indicare dove vogliamo dichiarare una classe CSS? Questo perché tutto JSX è compilato su puro JavaScript, e classe
è una parola riservata in ES6 JavaScript.App.css
e modifica il .App-header
La classe CSS deve essere:.App-header background-color: steelblue; altezza: 70 px; imbottitura: 20px; colore bianco;
Puntelli di componenti
il componente è statico. Ovvero, visualizza il contenuto fisso che non cambia mai. Ma i componenti possono essere fatti per essere dinamici e visualizzare i contenuti passati a loro, tramite i componenti del componente. Ciò rende i componenti improvvisamente molto più utili man mano che diventano generici e riutilizzabili.id
, classe
, stile
e così via che ci permettono di assegnare valori unici per quello specifico App.js
, aggiorna il
tag per essere:
componente per utilizzare il testo
puntello. This.props.text
testo
prop in App.js
.testo
puntellare dentro Header.js
utilizzando: This.props.text
this.props.text
sarebbe emesso, che non è quello che vogliamo.Questo
parola chiave si riferisce al Intestazione
classe componente, e oggetti di scena
è un oggetto che contiene tutti i valori passati da
. Nel nostro caso, il oggetti di scena
l'oggetto contiene solo una voce, ma puoi aggiungerne quante ne vuoi in pratica.
il componente è ora molto più generico e non contiene una stringa hard-coded. Questa è una buona pratica quando si scrivono componenti React. Più generico li fai, più riusabili sono.
componente, ma gli oggetti di scena possono anche passare variabili, riferimenti alle funzioni e lo stato ai componenti.titolo
è una variabile:Ispezionare componenti React
componente per selezionarlo.
il componente non ha oggetti di scena e quindi la finestra è vuota. Ma se selezioni il
componente all'interno
poi vedrai il puntello "testo" in cui siamo passati.Conclusione