În prima parte a acestei serii de tutori am folosit Create-reacționează aplicație
instrument pentru a crea o aplicație pentru exemplul de lucru ca punct de pornire pentru aplicația noastră de galerie "Movie Mojo".
În partea a doua, vom aborda adăugarea primei componente personalizate pentru a afișa carduri individuale de film. Vom vedea, de asemenea, cum folosirea elementelor de recuzită ne permite să personalizăm aspectul componentelor prin transmiterea datelor mai degrabă decât prin codarea greu a acestora.
Acest lucru demonstrează flexibilitatea și reutilizarea componentelor și modul în care pot fi folosite ca module de construcție puternice în aplicațiile dvs. React.
OK, să creăm o componentă! Pentru a începe, vom păstra lucrurile destul de simple și vom refactorul antetului HTML în componenta proprie.
Reacțiile moderne de reacție recomandă separarea fiecărei componente din aplicația dvs. într-un fișier separat. Vom urmări acest principiu și în proiectele dvs. / src / componente /
folder, creați un fișier nou numit Header.js
și deschideți-l într-un editor de text.
În partea de sus a fișierelor componente, începem întotdeauna prin importul bibliotecilor necesare, al altor componente (cum putem asambla componente) și a unor elemente suplimentare de care avem nevoie (de exemplu, stiluri). import
declarația face parte din ES6 și ne permite să păstrăm proiectele noastre extrem de modulare.
Pentru noi
componentă, trebuie să importem doar biblioteca React, pe care o putem face cu această afirmație:
import React, Component de la "reacție";
Aceasta importă întreaga bibliotecă React și o face disponibilă prin Reacţiona
variabil. De asemenea, importă component
obiect direct, astfel încât să îl putem folosi fără a fi nevoit să îl calificăm în mod special cu un precedent Reacţiona.
referință obiect.
Cu alte cuvinte, dacă nu am importat în mod explicit component
obiect atunci ar trebui să-l accesăm după cum urmează:
React.Component
Dar pentru că am importat component
direct, o putem folosi singură, fără a face referire la Reacţiona
variabil. Nu contează care dintre ele este folosită și este doar preferată.
Apoi, pentru a crea efectiv componenta, extindem component
obiect de a crea o clasă nouă care definește noastre
componentă. După import
declarație, tip:
clasa Header extinde Component export implicit App;
Aici, folosim o clasă ES6 ca container pentru componente. Clasele reprezintă o modalitate excelentă de a încapsula întregul cod necesar pentru a descrie componenta dvs..
S-ar putea să fi observat, de asemenea, că fișierul component se termină cu o declarație de export. Acest lucru, după cum vă puteți aștepta, va exporta componenta noastră și o va pune la dispoziția altor fișiere din proiectul nostru.
La minim, toate componentele React sunt obligate să aibă o metodă de randare, care returnează o anumită marcare. Aceasta ar putea fi HTML, alte componente React sau un amestec de ambele.
Adăugați acest lucru în interiorul clasei componente:
render () return React.createElement ('div', null, 'Buna ziua, aceasta este o componenta React!');
Pentru a folosi o componentă React în interiorul unei alte componente, trebuie mai întâi să o importăm, deci adăugați-o la lista declarațiilor de import din partea de sus a Rețineți cum nu trebuie să adăugați De fapt, dacă încercați să utilizați Acum putem adăuga Deci acest lucru nu este permis: Dacă doriți să returnați mai multe elemente, atunci trebuie să le înfășurați toate într-un singur element de înfășurare: Deci, asigurați-vă că adăugați Bine ați venit în aplicația "Movie Mojo" React! Acest lucru va duce la noi Pentru a finaliza Cu toate acestea, s-ar putea să fi observat că există o problemă. În Răspunsul este JSX. În Acesta este modul în care trebuie să scriem componentele React fără JSX. De fapt, sub capotă, acesta este modul în care JSX este compilat înainte de a putea fi redat la browser. Nu vi se cere să utilizați JSX deloc pentru componentele dvs. React; depinde în întregime de dvs. Dar aproape toate componentele pe care le veți întâlni vor fi scrise în JSX pentru că este mult mai ușor de scris. Este, de asemenea, foarte ușor de citit pentru alții să vă dea codul. Imaginați-vă că trebuie să studiați un proiect React care conține zeci de componente diferite, scrise în JavaScript simplu! Prin urmare, nu ar trebui să ne surprindă faptul că vom folosi JSX pentru definirea componentelor în restul seriei tutorial. Mergeți și înlocuiți În timp ce JSX ne permite mult mai multă flexibilitate în scrierea componentelor noastre, rețineți că nu este un HTML real pe care îl scriem, ci o abstractizare a acestuia. Puteți vedea acest lucru în fragmentul de cod de mai sus. Observați în De asemenea, să tweak stilurile antetului. Deschis Aceasta actualizează culoarea de fundal a antetului și reduce înălțimea. Până acum, ale noastre Gândiți-vă la elemente de recuzită a componentelor similare cu etichetele HTML. De exemplu, a Putem face același lucru și pentru componentele React. Spuneți că nu dorim ca antetul nostru să trimită textul fix "Descoperă-ți filmul Mojo!" tot timpul. Nu ar fi mai bine dacă antetul nostru ar putea afișa orice text? Spre deosebire de atributele HTML, putem numi elemente de recuzită a componentelor noastre, indiferent de ce ne place. Interior Apoi, actualizați Rezultă că antetul nostru afișează orice text este adăugat la Să aruncăm o privire mai atentă la modul în care ne-am referit Asamblările curly spun pur și simplu JSX că avem niște JavaScript pe care vrem să le evaluăm. Acest lucru îl deosebește de text. Dacă nu am folosit nici un bretele curat, șirul literal Al nostru Aceasta este o veste bună atunci când dezvoltați aplicații React viitoare, deoarece puteți reutiliza componente din proiectele anterioare, deci nu trebuie să scrieți nimic de la zero. Am folosit popiri de mai sus pentru a transmite o șir fixă în Pentru a trimite o variabilă prin recuzită, am putea face așa ceva, unde Există un instrument foarte util disponibil pentru browserul Chrome, care vă permite să examinați informații despre aplicația dvs. React. Instrumentele de dezvoltator implicite vă permit numai vizualizarea elementelor HTML normale, însă cu extensia Tools React Developer instalată, puteți naviga prin toate componentele React din aplicația dvs.. Odată ce este instalat, deschideți instrumentele de inspector de browser și faceți clic pe noul disponibil Reacţiona tab. Observați că în loc de elementele HTML, veți vedea ierarhia componentelor React din aplicația dvs. Faceți clic pe Odată selectată, informațiile despre o componentă sunt afișate în fereastra din dreapta. Instrumentele pentru dezvoltatori React sunt foarte utile pentru depanare, mai ales atunci când ajungeți la dezvoltarea unor aplicații React mai complexe, deci merită să vă obișnuiți să le folosiți pentru aplicații mai simple. De asemenea, puteți utiliza instrumentele React dezvoltator pentru a inspecta starea aplicației, la care vom ajunge în următorul tutorial. În acest tutorial ați învățat cum să împărțiți aplicația în componente separate pentru ao face mai modulară. Componentele de recuzită vă permit să transmiteți valori componentelor individuale, similar cu modul în care adăugați atribute elementelor HTML. De asemenea, am văzut cum să folosim noi instrumente de inspectori pentru a examina componentele și datele de recuzită. În partea a 3-a, vom adăuga statul în aplicația noastră pentru a ne ajuta să gestionăm mai eficient datele noastre.React.createElement ()
metoda creează un element HTML (a Header.js
și se deschide App.js
.App.js
:importați antetul de la "./Header";
.js
extinderea fișierului așa cum se presupune. De asemenea, pentru că
componenta este în același folder ca și al nostru
nu trebuie să specificăm calea completă.importați antetul de la "./components/Header";
din interior App.js
, veți obține o eroare de compilare.
componentă în declarația de returnare la fel ca orice element HTML. Cu toate acestea, există o avertizare. Poti numai returnați un element de nivel superior într-o metodă de returnare a componentelor.render () return ( );
render () return (
componentă în interiorul clasa App extinde Component render () return (
Descoperă-ți filmul Mojo!
componenta fiind redată.
, vom elimina următorul bloc de cod HTML App.js
și adăugați-l la Header.js
.Descoperă-ți filmul Mojo!
App.js
componenta rendering metoda returneaza ceea ce arata ca HTML. Cu toate acestea, în Header.js
există doar un singur apel React.createElement ()
. Ce se întâmplă?App.js
folosim JSX pentru a scrie sintaxa asemănătoare HTML pentru a defini ieșirea componentelor noastre. Comparați acest aspect cu definiția noastră pentru componente Header.js
.React.createElement ('div', null, 'Buna ziua, aceasta este o componenta React!');
React.createElement ()
apel cu echivalentul JSX de la care am copiat App.js
. Ta Header.js
fișierul ar trebui să arate astfel:import React, Component de la "reacție"; class Header extinde Component render () return (
Descoperă-ți filmul Mojo!
numele clasei
Decat clasă
pentru a indica unde vrem să declarăm o clasă CSS? Acest lucru se datorează faptului că toate JSX-ul este compilat până la JavaScript pur, și clasă
este un cuvânt rezervat în ES6 JavaScript.App.css
și editați .App-header
Clasa CSS a fost:.App-header fundal-color: steelblue; înălțime: 70px; padding: 20px; culoare albă;
Componente de recuzită
componenta este statică. Aceasta înseamnă că afișează conținut fix care nu se schimbă niciodată. Dar componentele pot fi făcute dinamice, iar conținutul de afișare poate fi introdus în ele prin recuzita de componente. Acest lucru face ca componentele să devină mult mai utile, deoarece devin generice și reutilizabile.id
, clasă
, stil
și așa mai departe, care ne permit să atribuim valori unice pentru acel specific App.js
, actualizați
eticheta care urmează să fie:
component pentru a utiliza text
sprijini.This.props.text
text
prop App.js
.text
în interior Header.js
folosind:This.props.text
this.props.text
ar fi produs, ceea ce nu este ceea ce dorim.acest
cuvântul cheie se referă la Antet
clasa de componente și recuzită
este un obiect care conține toate valorile trecute de la
. În cazul nostru, recuzită
obiect conține doar o singură intrare, dar puteți adăuga cât de mult vă place în practică.
componenta este acum mult mai generică și nu conține un șir de coduri greu. Aceasta este o bună practică atunci când scrieți componentele React. Cu cât le generați mai generic, cu atât sunt mai reutilizabile.
componentă, dar și elemente de recuzită pot trece variabilele, referințele funcțiilor și componentele.antet
este o variabilă:Inspectarea componentelor reactive
pentru a le selecta.
componenta nu are nici o recuzită și astfel fereastra este goală. Dar dacă selectați
componentă interioară
atunci veți vedea textul "text" în care am trecut.Concluzie