logo

BrowserRouter i React

React Router er et standardbibliotek for ruting i React. Den muliggjør navigering mellom visninger fra forskjellige komponenter i en React-applikasjon, lar nettleserens URL endres og holder brukergrensesnittet synkronisert med URL-en.

For å forstå hvordan React Router fungerer, la oss lage en enkel applikasjon for React. Applikasjonen vil inkludere bolig-, om- og kontaktkomponentene. Vi kommer til å bruke React Router for å navigere mellom disse komponentene.

npx create-react-app

BrowserRouter i React

Utviklingsmiljøet ditt er klart. La oss nå installere React Router i applikasjonen vår.

Reager Router : React Router kan installeres i din React-applikasjon via npm. Følg trinnene nedenfor for å sette opp ruteren i din React-applikasjon:

Trinn 1: CD i prosjektkatalogen din, dvs ., java.

Trinn 2: Bruk følgende kommando for å installere React Router:

npm install - -save react-router-dom

BrowserRouter i React

Etter å ha installert react-router-dom, legg til komponentene i React-applikasjonen din.

Legge til React Router-komponenter:

Hovedkomponentene til React Router er:

    Nettleserruter:BrowserRouter er en ruterimplementering som bruker HTML5 History API (pushstate-, replacestate- og popstate-hendelser) for å holde brukergrensesnittet ditt synkronisert med URL-en. Det er den overordnede komponenten som brukes til å lagre alle andre komponenter.Rute:Dette er en ny komponent introdusert i v6 og en oppgradering av komponenten. De viktigste fordelene med Switch Over Routes er:

I stedet for å krysse i rekkefølge, velges ruter basert på den beste matchen.

    Rute: En rute er en betinget vist komponent som gir brukergrensesnitt når banen samsvarer med gjeldende URL.Linker: Linker-komponenten oppretter lenker for forskjellige ruter og implementerer navigasjon rundt applikasjonen. Den fungerer som en HTML-ankerkode.

For å legge til React Router-komponenter til applikasjonen din, åpne prosjektkatalogen i redigeringsprogrammet du bruker og gå til app.js-filen. Legg nå til koden nedenfor til app.js.

 import { BrowserRouter as Router, Routes, Route, Link } from 'react-router-dom'; 

Merk: BrowserRouter er kalt ruter.

Bruke React Router: For å bruke React Router, la oss først lage noen komponenter i React-applikasjonen. I prosjektkatalogen din, opprett en mappe kalt komponenter inne i src-mappen og legg nå til 3 filer kalt home.js, about.js og contact.js i komponenter-mappen.

BrowserRouter i React

La oss legge til litt kode til våre 3 komponenter:

Home.js:

 import React from 'react'; function Home (){ return } export default Home; 

About.js:

 import React from &apos;react&apos;; function About () { return <h2> jAVAtPOINT is a computer science portal for TUTORIALS!</h2> Read more about us at : <a href="https://www.javatpoint.in/about/"> https://www.javatpoint.in/about/ </a> } export default About; 

Contact.js:

 import React from &apos;react&apos;; function Contact (){ return You can find us here: <br> Javatpoint <br> G-13, second floor, Sector -3 Noida <br> Noida, Uttar Pradesh (201305) } export default Contact; 

La oss nå inkludere React Router-komponentene i applikasjonen:

Nettleserruter : Legg til en alias BrowserRouter som en ruter i app.js-filen for å pakke inn alle andre komponenter. BrowserRouter er en overordnet komponent og kan bare ha ett barn.

 class App extends Component { render() { return ( ); } } 

Linker: La oss nå lage koblingene til komponentene våre. Link-komponenten bruker rekvisitter for å beskrive stedet som koblingen skal navigere til.

 <ul> <li> Home </li> <li> About Us </li> <li> Contact Us </li> </ul> 

Kjør applikasjonen din på den lokale verten og klikk på koblingen som er opprettet. Du vil legge merke til at URL-ene endres i henhold til verdien av koblingskomponenten.

BrowserRouter i React

Rute : Rutekomponenten vil hjelpe oss med å etablere koblingen mellom komponentens brukergrensesnitt og URL-en. For å inkludere ruten i applikasjonen, legg til koden nedenfor i app.js.

 <route exact path="/" element="{}"> <route exact path="/about" element="{}"> <route exact path="/contact" element="{}"> </route></route></route>

Komponentene er nå koblet til, og ved å klikke på en hvilken som helst kobling vil den tilsvarende komponenten gjengis. La oss nå prøve å forstå rekvisittene knyttet til rotkomponenten.

    Nøyaktig: Dette samsvarer med den nøyaktige verdien med URL-en. For eksempel vil exact path='/about' bare gjengi komponenten hvis den samsvarer nøyaktig med banen, men hvis vi fjerner den fra syntaksen, vil brukergrensesnittet fortsatt bli gjengitt, selv om strukturen er /about /10.Sti: Bane spesifiserer et banenavn som vi tildeler komponenten vår.
  1. Element refererer til komponenten som vil gjengi hvis banen samsvarer.

Merk: Som standard er ruter inkluderende, noe som betyr at mer enn én rutekomponent kan matche en URL-bane og gjengi samtidig. Hvis vi ønsker å gjengi en enkelt komponent, må vi bruke ruter her.

Ruter : For å lese en enkelt komponent, pakk alle ruter inne i ruter-komponenten.

 <route exact path="/" element="{}"> <route exact path="/about" element="{}"> <route exact path="/contact" element="{}"> </route></route></route>

Bytt grupper på tvers av flere ruter, gjenta dem og finn den første som passer til banen. Dermed blir den tilsvarende komponenten av banen gjengitt.

Her er hele kildekoden vår etter å ha lagt til alle komponentene:

 import React, { Component } from &apos;react&apos;; import { BrowserRouter as Router,Routes, Route, Link } from &apos;react-router-dom&apos;; import Home from &apos;./component/home&apos;; import Contact from &apos;./component/contact&apos;; import About from &apos;./component/about&apos;; import &apos;./App.css&apos;; class App extends Component { render() { return ( <ul classname="App-header"> <li> Home </li> <li> About Us </li> <li> Contact Us </li> </ul> <route exact path="/" element="{}"> <route exact path="/about" element="{}"> <route exact path="/contact" element="{}"> ); } } export default App; </route></route></route>

Nå kan du klikke på lenken og navigere i de forskjellige komponentene. React Router holder applikasjonens brukergrensesnitt synkronisert med URL-en.

Endelig har vi implementert navigasjon i vår React-applikasjon med React Router.

En som bruker HTML5 History API (pushstate-, replacestate- og popstate-hendelser) for å holde brukergrensesnittet ditt synkronisert med URL-en.

java array dynamisk
 

basenavn: streng

Basis URL for alle steder. Hvis appen din serveres fra en underkatalog på serveren din, vil du sette den til den underkatalogen. Et riktig formatert basenavn må inneholde en innledende skråstrek, men ingen etterfølgende skråstrek.

 // renders  // renders <a href="tmp//calendar/tomorrow"> ... </a>

getUserConfirmation: func

En funksjon som skal brukes for å bekrefte navigering. Bruker som standard window.confirm.

 { // this is the default behavior const allowTransition = window.confirm(message); callback(allowTransition); }} /&gt; 

forceRefresh: bool

Hvis dette er sant, vil ruteren bruke helsides oppdateringer på sidenavigasjon. Det kan være lurt å bruke dette til å imitere hvordan en tradisjonell server-gjengitt app ville fungere med helsideoppdateringer mellom sidenavigering.

 

keyLength: nummer

Lengden på plassering. Nøkkel. Standard er 6.

 

barn: node- underordnet element å gjengi.

Merk: På React må du bruke et enkelt underordnet element fordi gjengivelsesmetoden ikke kan returnere mer enn ett element. Hvis du trenger mer enn ett element, kan du prøve å pakke dem inn i en ekstra eller .

A som bruker hash-delen av URL-en (dvs. window.location.hash) for å holde brukergrensesnittet ditt synkronisert med URL-en.

Merk: hashen støtter ikke historikkplassering. Nøkkel eller plassering. Stat. I tidligere versjoner prøvde vi å redusere atferden, men det var kantsaker som vi ikke kunne løse. Enhver kode eller plugin som krever denne oppførselen vil ikke fungere.

Siden denne teknologien kun er ment å støtte eldre nettlesere, oppfordrer vi deg til å konfigurere serveren til å fungere med i stedet.

 

basenavn: streng

Grunnadressen for alle plasseringer. Et riktig formatert basenavn skal ha en innledende skråstrek, men ingen etterfølgende skråstrek.

 // renders <a href="#/calendar/today"> </a>

getUserConfirmation: func

En funksjon som skal brukes for å bekrefte navigering. Bruker som standard window.confirm.

 { // this is the default behavior const allowTransition = window.confirm(message); callback(allowTransition); }} /&gt; 

hashType: streng

Kodingen som brukes til window.location.hash . Tilgjengelige verdier er:

  • 'slash' - lager hashes som #/ og #/sunshine/lollipops
  • 'noslash' - # og #sunshine/lollipops . som hasj skaper
  • 'hashbang' - lager 'ajax crawlable' (avviklet av google) hashes som #!/ og #!/sunshine/lollipops

Standard er 'slash'.

barn: node

Et enkelt underordnet element å gjengi.

Gir deklarativ, tilgjengelig navigasjon rundt applikasjonen din.

 About 

til: streng

En strengrepresentasjon av en koblingsplassering opprettes ved å kombinere stedets banenavn, søke- og hashegenskaper.

 

Et objekt som kan ha en av følgende egenskaper:

    banenavn: En streng som representerer banen som skal kobles.finne: En strengrepresentasjon av spørringsparameteren.hasj:Hash-koden som skal legges inn i nettadressen, f.eks. #A-hash.stat: Staten forblir på plass.
 

til: func

En funksjon der gjeldende plassering sendes som et argument og som må returnere plasseringsrepresentasjonen som en streng eller et objekt.

 ({ ...location, pathname: &apos;/courses&apos; })} /&gt; `${location.pathname}?sort=name`} /&gt; 

erstatte: bool

Når det er sant, vil et klikk på koblingen erstatte gjeldende oppføring i stedet for å legge til en ny

 entry to the history stack. 

intern ref: func

Fra og med React Router 5.1, hvis du bruker React 16, bør du ikke trenge denne rekvisitten da vi videresender ref til den underliggende . Bruk en vanlig ref i stedet.

Gir tilgang til komponentens innebygde ref.

 { // `node` refers to the mounted DOM element // or null when unmounted }} /&gt; 

innerRef: RefObject

ups i java

Fra og med React Router 5.1, hvis du bruker React 16, bør du ikke trenge denne rekvisitten fordi vi videresender referenten til den underliggende . Bruk en vanlig ref i stedet.

Få den underliggende refen til komponenten ved å bruke React.createRef.

 let anchorRef = React.createRef() 

komponent: React.Component

Hvis du vil bruke din egen navigasjonskomponent, kan du gjøre det ved å sende den gjennom komponenten.

 const FancyLink = React.forwardRef(({ navigate, ...props }, ref) =&gt; { return ( <a ref="{ref}" {...props} onclick="{handleClick}">&#x1F485; {props.children} ) }) </a>

Du kan også sende rekvisitter du vil være med på for eksempel en tittel, id, klassenavn osv.

En spesiell versjon av det vil legge til stilattributter til det gjengitte elementet hvis det samsvarer med en eksisterende URL.

 About 

klassenavn: streng | func

className kan enten være en streng eller en funksjon som returnerer en streng. Hvis funksjonen klassenavn brukes, sendes lenkens aktive tilstand som en parameter. Dette er nyttig hvis du utelukkende vil bruke et klassenavn på en inaktiv lenke.

 &apos;nav-link&apos; + (!isActive ? &apos; unselected&apos; : &apos;&apos;) } &gt; 

Vanlige spørsmål

I React Router v6 vil activeClassName bli fjernet, og du bør bruke funksjonen className for å bruke klassenavnet på aktive eller inaktive NavLink-komponenter.

ActiveClassName: String

klasse for å gi elementet når det er aktivt. Standard gitt klasse er aktiv. Det vil bli kombinert med klassenavnet rekvisitt.

 

stil: objekt | func

stil kan enten være et React.CSSProperties-objekt eller en funksjon som returnerer et stilobjekt. Hvis funksjonsstilen brukes, sendes lenkens aktive tilstand som en parameter.

 ({ color: isActive ? &apos;green&apos; : &apos;blue&apos; })} &gt; 

I React Router v6 vil den aktive stylingen bli fjernet, og du må bruke funksjonsstilen for å bruke innebygde stiler på aktive eller inaktive NavLink-komponenter.

Aktiv stil: Objekt

Stilene som brukes på elementet når det er aktivt.

 <navlink to="/faq" activestyle="{{" fontweight: 'bold', color: 'red' }} < pre> <h3>exact: bool</h3> <p>When true, the active class/style will only apply if the location is an exact match.</p> <pre> Profile </pre> <h3>strict: bool</h3> <p>If true, the trailing slash on a location&apos;s pathname will be considered when determining whether the location matches the current URL. See the documentation for more details.</p> <pre> Events </pre> <h3>isActive: func</h3> <p>A function to add additional logic to determine if the Link is active. This should be used when you want to do more than verify that the pathname of the Link matches the pathname of the current URL.</p> <pre> { if (!match) { return false; } // only consider an event active if its event id is an odd number const eventID = parseInt(match.params.eventID); return !isNaN(eventID) &amp;&amp; eventID % 2 === 1; }} &gt; Event 123 </pre> <h3>location: object</h3> <p>isActive Compares to the current history location (usually the current browser URL).</p> <h3>aria-current: string</h3> <p> <strong>The value of the area-current attribute used on the active Link. Available values are:</strong> </p> <ul> <li>&apos;page&apos; - used to indicate a link within a set of pagination links</li> <li>&apos;Steps&apos; - used to indicate a link within the step indicator for a step-based process</li> <li>&apos;location&apos; - used to indicate an image that is visually highlighted as the current component of the flow chart</li> <li>&apos;date&apos; - used to indicate the current date within the calendar</li> <li>&apos;time&apos; - used to indicate the current time within a timetable</li> <li>&apos;true&apos; - used to indicate whether NavLink is active</li> <li>&apos;false&apos; - used to prevent assistive technologies from reacting to the current Link (one use case would be to prevent multiple area-current tags on a page)</li> </ul> <hr></navlink>

streng: bool

Hvis dette er sant, vil den etterfølgende skråstreken på et steds banenavn bli vurdert når det skal avgjøres om plasseringen samsvarer med gjeldende URL. Se dokumentasjonen for flere detaljer.

 Events 

isActive: func

En funksjon for å legge til ekstra logikk for å avgjøre om koblingen er aktiv. Dette bør brukes når du vil gjøre mer enn å bekrefte at banenavnet til koblingen samsvarer med banenavnet til gjeldende URL.

 { if (!match) { return false; } // only consider an event active if its event id is an odd number const eventID = parseInt(match.params.eventID); return !isNaN(eventID) &amp;&amp; eventID % 2 === 1; }} &gt; Event 123 

plassering: objekt

isActive Sammenligner med gjeldende historikkplassering (vanligvis gjeldende nettleser-URL).

aria-strøm: streng

Verdien av area-current-attributtet som brukes på den aktive koblingen. Tilgjengelige verdier er:

  • 'side' - brukes til å indikere en lenke i et sett med pagineringslenker
  • 'Trinn' - brukes til å indikere en kobling i trinnindikatoren for en trinnbasert prosess
  • 'location' - brukes til å indikere et bilde som er visuelt uthevet som gjeldende komponent i flytskjemaet
  • 'dato' - brukes til å indikere gjeldende dato i kalenderen
  • 'tid' - brukes til å angi gjeldende tid innenfor en tidsplan
  • 'true' - brukes til å indikere om NavLink er aktiv
  • 'false' - brukes til å forhindre at hjelpeteknologier reagerer på gjeldende kobling (ett bruks tilfelle vil være å forhindre flere områdeaktuelle tagger på en side)