Acest tutorial vă va ajuta să utilizați modulele reacter-router și react-module de tranziție pentru a crea aplicații React cu mai multe pagini cu animații de tranziție a paginilor.
Dacă ați avut ocazia să încercați React, probabil ați auzit despre Create-reacționează aplicație pachet, ceea ce face foarte ușor să începeți cu un mediu de dezvoltare React.
În acest tutorial, vom folosi acest pachet pentru a iniția aplicația noastră React.
Deci, în primul rând, asigurați-vă că aveți Node.js instalat pe computer. Acesta va instala, de asemenea, npm pentru tine.
În terminalul tău, fugi npm instalează -g create-react-app
. Acest lucru va fi instalat global Create-reacționează aplicație pe calculatorul tau.
Odată ce ați terminat, puteți să verificați dacă există tastând create-react-app -V
.
Acum este timpul să construim proiectul nostru React. Fugi crea-reac-app-app multi-page
. Poți, bineînțeles, să le înlocui cu mai multe pagini aplicație
cu tot ce vrei.
Acum, Create-reacționează aplicație va crea un folder numit cu mai multe pagini aplicație. Doar tastați cd multi-page-app
pentru a schimba directorul și a alerga acum npm start
pentru a inițializa un server local.
Asta e tot. Aveți o aplicație React care rulează pe serverul dvs. local.
Acum este timpul sa curatati fisierele implicite si sa pregatiti aplicatia.
În tine src
folder, ștergeți totul, dar nu App.js
și index.js
. Atunci deschide-te index.js
și înlocuiți conținutul cu codul de mai jos.
import Reacționează de la "reacționează"; import ReactDOM de la "react-dom"; aplicația de import de la "./App"; ReactDOM.render (, document.getElementById ( 'root'));
Am eliminat practic registerServiceWorker
precum și import "./index.css";
linia.
De asemenea, înlocuiți-vă App.js
fișier cu codul de mai jos.
import React, Component de la "reacție"; clasa App extinde Component render () return (); exportă aplicația implicită;
Acum vom instala modulele necesare.
În terminalul dvs., tastați următoarele comenzi pentru a instala reacționează-router și reacționează-tranziție-grup module, respectiv.
npm instala rea-router-dom -save
npm install [email protected] - salvați
După instalarea pachetelor, puteți verifica package.json
fișier din directorul principal al proiectului pentru a verifica dacă modulele sunt incluse în dependențe.
Există în principiu două opțiuni diferite de router: HashRouter și BrowserRouter.
După cum sugerează și numele, HashRouter utilizează hashes pentru a urmări legăturile dvs. și este potrivit pentru serverele statice. Pe de altă parte, dacă aveți un server dinamic, este o opțiune mai bună de a utiliza BrowserRouter, având în vedere faptul că adresele dvs. URL vor fi mai frumoase.
Odată ce vă decideți care dintre ele ar trebui să utilizați, continuați și adăugați componenta la dvs. index.js
fişier.
import HashRouter de la "react-router-dom"
Următorul lucru este să ne împachetăm
componente cu componenta router.
Deci, ultimul tău index.js
fișierul ar trebui să arate astfel:
import Reacționează de la "reacționează"; import ReactDOM de la "react-dom"; importați HashRouter din aplicația "import-router-dom" import din "./App"; ReactDOM.render (, document.getElementById ( 'root'));
Dacă utilizați un server dinamic și preferați să îl utilizați BrowserRouter, singura diferență ar fi importul BrowserRouter și folosind-o pentru a înfășura
component.
Prin împachetarea noastră
componente, noi servim istorie obiecte față de aplicația noastră și, prin urmare, alte componente ale router-ului de reacție pot comunica între ele.
În interiorul nostru
componente, vom avea două componente numite și
. După cum indică numele, acestea vor menține meniul de navigare și respectiv conținutul afișat.
Creați un folder numit "componente" în tine src
director, apoi creați Menu.js
și Content.js
fișiere.
Să ne ocupăm de noi Menu.js
component.
Va fi o componentă funcțională apatridă, deoarece nu avem nevoie de stări și cârlige de ciclu de viață.
import Reacționează din 'react' const Menu = () => return (
Aici avem a
eticheta cu tag-uri, care vor fi link-urile noastre.
Acum adăugați următoarea linie la dvs. Meniul component.
import Link de la "react-router-dom"
Și apoi înfășurați conținutul etichete cu
component.
componenta este în esență a reacționează-router componentă care acționează ca un
, dar nu reîncărcați pagina dvs. cu un nou link țintă.
De asemenea, dacă vă stilul dvs. A
în CSS, veți observa că componenta obține același stil.
Rețineți că există o versiune mai avansată a componentă, care este
. Acest lucru vă oferă caracteristici suplimentare, astfel încât să puteți stilul legăturilor active.
Acum trebuie să definim unde se va naviga fiecare legătură. În acest scop, componenta are a
la
sprijini.
import Reacționează de la 'react' import Link de la 'react-router-dom' const Menu = () => return
În interiorul nostru
componente, vom defini Rutele pentru a se potrivi cu Link-uri.
Avem nevoie de Intrerupator
și Traseu
componente de la reacționează-router-dom. Deci, mai întâi de toate, le importați.
import Comutare, Traseu de la "react-router-dom"
În al doilea rând, importați componentele la care vrem să călătorim. Acestea sunt Acasă
, Lucrări
și Despre
componente pentru exemplul nostru. Presupunând că ați creat deja aceste componente în interiorul componente trebuie să le importăm.
importați acasă din "./Home"
import Lucrări de la "./Works"
import Despre './About'
Aceste componente pot fi orice. Tocmai le-am definit drept componente funcționale apatride cu conținut minim. Un exemplu de șablon este de mai jos. Puteți folosi acest lucru pentru toate cele trei componente, dar nu uitați să schimbați numele în consecință.
import Reacție de la 'react' const Home = () => return (Acasă) implicit de export
Noi folosim
componentă pentru gruparea noastră
componente. Intrerupator caută toate Rutele și apoi returnează prima potrivire.
Rutele sunt componente care vă apelează componenta țintă dacă se potrivește cu aceasta cale
sprijini.
Versiunea finală a site-ului nostru Content.js
fișierul arată astfel:
import Reacționează de la 'react' import Switch, Route de la 'react-router-dom' import Home from './Home' import Works from './Works' import Despre './About' const Content = > retur () Conținutul implicit pentru export
Observați că extra exact
propunerea este necesară pentru Acasă componentă, care este directorul principal. Utilizarea exact
forțează Traseu pentru a se potrivi cu numele exact al căii. Dacă nu este folosit, alte nume de cale începând cu /
ar fi, de asemenea, însoțită de Acasă și pentru fiecare legătură, ar afișa numai Acasă component.
Acum când faceți clic pe link-urile de meniu, aplicația trebuie să comute conținutul.
Până acum, avem un sistem router de lucru. Acum vom anima tranzițiile rutei. Pentru a realiza acest lucru, vom folosi reacționează-tranziție-grup modul.
Vom anima montare starea fiecărei componente. Când direcționați diferite componente cu Traseu componentă interioară Intrerupator, esti esential montare și demontează diferite componente în consecință.
Noi vom folosi reacționează-tranziție-grup în fiecare componentă pe care dorim să o animăm. Deci puteți avea o animație diferită pentru fiecare componentă. Voi folosi doar o animație pentru toți.
Ca exemplu, să folosim
component.
În primul rând, trebuie să importăm CSSTransitionGroup.
import CSSTransitionGroup de la "grup de reacție-tranziție"
Apoi trebuie să îți împachetezi conținutul.
Deoarece avem de-a face cu starea de montaj a componentei, permitem transitionAppear
și setați o perioadă de timp pentru aceasta. De asemenea, dezactivăm transitionEnter
și transitionLeave
, deoarece acestea sunt valabile numai după montarea componentei. Dacă intenționați să animați copii ai componentei, trebuie să le folosiți.
În cele din urmă, adăugați specificul transitionName
astfel încât să putem face referire la acesta în fișierul CSS.
import Reacționează din 'react' import CSSTransitionGroup din 'react-transition-group-group' import '... /styles/homeStyle.css' const Home =) implicit de export Acasă
De asemenea, am importat un fișier CSS, unde definim tranzițiile CSS.
.homeTransition-apare opacity: 0; .homeTransition-appear.homeTransition-apare-activ opacitate: 1; tranziție: toate .5s ease-in-out;
Dacă actualizați pagina, ar trebui să vedeți efectul de decolorare a paginii Acasă component.
Dacă aplicați aceeași procedură tuturor celorlalte componente direcționate, veți vedea animațiile individuale atunci când schimbați conținutul cu dvs. Meniul.
În acest tutorial, am acoperit reacționează-router-dom și reacționează-tranziție-grup module. Cu toate acestea, există mai mult pentru ambele module decât cele acoperite în acest tutorial. Aici este demo de lucru a ceea ce a fost acoperit.
Deci, pentru a afla mai multe caracteristici, mergeți întotdeauna prin documentația modulelor pe care le utilizați.
În ultimii ani, React a crescut în popularitate. De fapt, avem un număr de elemente pe piață care sunt disponibile pentru cumpărare, revizuire, implementare și așa mai departe. Dacă sunteți în căutarea unor resurse suplimentare în jurul React, nu ezitați să le verificați.