Denna handledning kommer att gå igenom dig genom att använda modulerna Reaktor-router och Reaktionsövergång-Grupp för att skapa flera sidor React-applikationer med sidövergångs animeringar.
Om du någonsin har haft chansen att försöka reagera har du säkert hört talas om skapa reagera-app paket, vilket gör det super lätt att börja med en React-utvecklingsmiljö.
I den här handledningen använder vi detta paket för att initiera vår React app.
Så först och främst, se till att du har Node.js installerat på din dator. Det installerar också npm för dig.
I din terminal kör du npm installera-g skapa-reagera-app
. Detta kommer att installeras globalt skapa reagera-app på din dator.
När det är klart kan du kontrollera om det finns där genom att skriva skapa-reagera-app -V
.
Nu är det dags att bygga vårt React-projekt. Bara spring skapa multi-sida-app med skapande-reagerande app
. Du kan självklart ersätta multi-page-app
med allt du vill ha.
Nu, skapa reagera-app kommer att skapa en mapp som heter multi-page-app. Bara Skriv cd flersidig app
ändra katalogen och kör nu npm start
att initiera en lokal server.
Det är allt. Du har en React-app som körs på din lokala server.
Nu är det dags att städa standardfilerna och förbereda vår applikation.
I din src
mapp, ta bort allt utom App.js
och index.js
. Öppna sedan index.js
och ersätt innehållet med koden nedan.
Import Reakt från "reagera"; Importera ReactDOM från 'react-dom'; importera app från './App'; ReactDOM.render (, document.getElementById ( 'root'));
Jag tog i grunden bort registerServiceWorker
relaterade linjer och även importera "./index.css";
linje.
Ersätt också din App.js
filen med koden nedan.
Importreakt, Komponent från "reagera"; klass App utökar komponent render () return (); exportera standard App;
Nu installerar vi de nödvändiga modulerna.
I din terminal skriver du följande kommandon för att installera reagerar-router och reagerar-övergång-grupp moduler respektive.
npm installera reaktor-router-dom -save
npm installera [email protected] --save
Efter installationen av paketet kan du kontrollera package.json
filen i din huvudprojektkatalog för att verifiera att modulerna ingår under beroenden.
Det finns i princip två olika routeralternativ: HashRouter och BrowserRouter.
Som namnet antyder, HashRouter använder hash för att hålla reda på dina länkar, och den är lämplig för statiska servrar. Å andra sidan, om du har en dynamisk server är det ett bättre alternativ att använda BrowserRouter, med tanke på att dina webbadresser blir snyggare.
När du väl bestämmer vilken du ska använda, fortsätt bara och lägg till komponenten i din index.js
fil.
importera HashRouter från "reager-router-dom"
Nästa sak är att paketera våra
komponent med routerns komponent.
Så din sista index.js
filen ska se så här ut:
Import Reakt från "reagera"; Importera ReactDOM från 'react-dom'; importera HashRouter från "React-Router-Dom" Importera App från "./App"; ReactDOM.render (, document.getElementById ( 'root'));
Om du använder en dynamisk server och föredrar att använda den BrowserRouter, Den enda skillnaden skulle vara att importera BrowserRouter och använda den för att paketera
komponent.
Genom att förpacka vår
komponent, vi betjänar historia motsätta sig vår ansökan, och sålunda kan andra reaktor-router komponenter kommunicera med varandra.
Inuti vårt
komponent, vi kommer att ha två komponenter som heter och
. Som namnen antyder kommer de att hålla navigeringsmenyn respektive visad innehåll.
Skapa en mapp som heter "komponenter" i din src
katalog och skapa sedan Menu.js
och Content.js
filer.
Låt oss fylla i vårt Menu.js
komponent.
Det kommer att vara en statslös funktionell komponent eftersom vi inte behöver tillstånd och livscykelhakar.
importera Reakt från "reagera" const Meny = () => returnera (
Här har vi en
tagga med taggar, som kommer att vara våra länkar.
Lägg nu till följande rad i din Meny komponent.
importera Link från "reager-router-dom"
Och sedan paketera innehållet i taggar med
komponent.
De komponenten är väsentligen a reagerar-router komponent som a
taggen, men det laddar inte om din sida med en ny mållänk.
Också, om du stilar din en
tagga i CSS, kommer du märka att komponent får samma styling.
Observera att det finns en mer avancerad version av komponent, vilket är
. Detta ger dig extra funktioner så att du kan stile de aktiva länkarna.
Nu måste vi definiera var varje länk ska navigera. För detta ändamål, komponenten har a
till
stötta.
importera React från "reagera" import Link från "reager-router-dom" const Menu = () => returnera
Inuti vårt
komponent, kommer vi att definiera rutter att matcha länkar.
Vi behöver Växla
och Rutt
komponenter från reagerar-router-dom. Så, först och främst, importera dem.
importera Switch, Route från "reager-router-dom"
För det andra, importera de komponenter som vi vill flytta till. Det här är Hem
, Arbetar
och Handla om
komponenter för vårt exempel. Förutsatt att du redan har skapat dessa komponenter inuti komponenter mapp, vi måste också importera dem.
importera hem från "./Home"
Importverk från "./Works"
importera om från "./om"
Dessa komponenter kan vara allting. Jag definierade dem bara som stateless funktionella komponenter med minsta innehåll. En exempelmall är nedan. Du kan använda detta för alla tre komponenterna, men glöm inte att ändra namnen i enlighet med detta.
importera Reakt från 'reagera' const Hem = () => returnera (Hem) exportera standard Hem
Vi använder
komponent för att gruppera vår
komponenter. Växla letar efter alla rutter och returnerar sedan den första matchande.
Rutter är komponenter som kallar din målkomponent om den matchar väg
stötta.
Den slutliga versionen av vår Content.js
filen ser så här ut:
Importera Reakt från "Reakt" import Växla, Rutt från "React-Router-Dom" Importera Hem från "./Home" Import Verkar från "./Works" Importera Om från "./Om" Const Content = () = > retur () exportera standardinnehåll
Observera att extra exakt
prop krävs för Hem komponent, som är huvudkatalogen. Använder sig av exakt
tvingar Rutt för att matcha exakt sökväg. Om den inte används används andra söknamn som börjar med /
skulle också matchas av Hem komponent, och för varje länk skulle den bara visa Hem komponent.
Nu när du klickar på menylänkarna bör din app byta innehåll.
Hittills har vi ett fungerande router system. Nu ska vi animera vägövergångarna. För att uppnå detta ska vi använda reagerar-övergång-grupp modul.
Vi kommer att animera montering tillstånd för varje komponent. När du rutter olika komponenter med Rutt komponent inuti Växla, du är väsentligen montering och avmontering olika komponenter i enlighet därmed.
Vi kommer använda reagerar-övergång-grupp I varje komponent vill vi animera. Så du kan ha en annan monteringsanimering för varje komponent. Jag kommer bara att använda en animering för dem alla.
Till exempel, låt oss använda
komponent.
Först måste vi importera CSSTransitionGroup.
importera CSSTransitionGroup från "React-transition-Group"
Då behöver du lägga in ditt innehåll med det.
Eftersom vi har att göra med komponentens monteringsläge aktiverar vi transitionAppear
och ställa in en timeout för den. Vi inaktiverar också transitionEnter
och transitionLeave
, eftersom dessa endast gäller när komponenten är monterad. Om du planerar att animera några barn i komponenten måste du använda dem.
Slutligen lägg till det specifika transitionName
så att vi kan referera till det i CSS-filen.
importera React från "reagera" import CSSTransitionGroup från "React-transition-group" import "... /styles/homeStyle.css 'const Hem = () => returnera) exportera standard Hem Hem
Vi importerade också en CSS-fil, där vi definierar CSS-övergångarna.
.homeTransition-visas opacitet: 0; .homeTransition-appear.homeTransition-appear-active opacitet: 1; övergång: alla .5s lätt in-ut;
Om du uppdaterar sidan ska du se försvinnandet av Hem komponent.
Om du tillämpar samma procedur på alla andra routerade komponenter ser du deras individuella animeringar när du ändrar innehållet med din Meny.
I den här handledningen täckte vi reagerar-router-dom och reagerar-övergång-grupp moduler. Det finns emellertid mer i båda modulerna än vi behandlade i denna handledning. Här är en fungerande demo av vad som var täckt.
Så, för att lära dig mer funktioner, gå alltid igenom dokumentationen för de moduler du använder.
Under de senaste åren har React vuxit i popularitet. Faktum är att vi har ett antal objekt på marknaden som är tillgängliga för köp, granskning, genomförande och så vidare. Om du letar efter ytterligare resurser runt React, tveka inte att kolla in dem.