logo

BrowserRouter v Reactu

React Router je standardna knjižnica za usmerjanje v Reactu. Omogoča navigacijo med pogledi različnih komponent v aplikaciji React, omogoča spreminjanje URL-ja brskalnika in ohranja uporabniški vmesnik sinhroniziran z URL-jem.

Da bi razumeli, kako deluje React Router, ustvarimo preprosto aplikacijo za React. Aplikacija bo vključevala komponente dom, o in kontakt. Za krmarjenje med temi komponentami bomo uporabljali React Router.

npx create-react-app

BrowserRouter v Reactu

Vaše razvojno okolje je pripravljeno. Zdaj pa namestimo React Router v našo aplikacijo.

hashtable java

React Router : React Router lahko namestite v svojo aplikacijo React prek npm. Za nastavitev usmerjevalnika v aplikaciji React sledite spodnjim korakom:

1. korak: CD v imeniku vašega projekta, tj ., java.

2. korak: Uporabite naslednji ukaz za namestitev React Routerja:

npm namestitev - -save react-router-dom

BrowserRouter v Reactu

Po namestitvi react-router-dom dodajte njegove komponente svoji aplikaciji React.

Dodajanje komponent usmerjevalnika React:

Glavne komponente React Routerja so:

    BrowserRouter:BrowserRouter je implementacija usmerjevalnika, ki uporablja API za zgodovino HTML5 (dogodki pushstate, replacestate in popstate), da vaš uporabniški vmesnik ostane sinhroniziran z URL-jem. Je nadrejena komponenta, ki se uporablja za shranjevanje vseh drugih komponent.Pot:To je nova komponenta, predstavljena v v6 in nadgradnja komponente. Glavne prednosti prehodnih poti so:

Namesto prečkanja v zaporedju se poti izberejo na podlagi najboljšega ujemanja.

    Pot: Pot je pogojno prikazana komponenta, ki nudi uporabniški vmesnik, ko se njena pot ujema s trenutnim URL-jem.Povezave: Komponenta Povezave ustvarja povezave za različne poti in izvaja navigacijo po aplikaciji. Deluje kot sidrna oznaka HTML.

Če želite svoji aplikaciji dodati komponente React Router, odprite imenik projekta v urejevalniku, ki ga uporabljate, in pojdite na datoteko app.js. Zdaj dodajte spodnjo kodo v app.js.

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

Opomba: BrowserRouter je vzdevek Router.

Uporaba usmerjevalnika React: Za uporabo React Routerja najprej ustvarimo nekaj komponent v aplikaciji React. V imeniku vašega projekta ustvarite mapo z imenom 'components' znotraj mape src in zdaj dodajte 3 datoteke z imenom 'home.js', 'about.js' in 'contact.js' v mapo 'components'.

BrowserRouter v Reactu

Dodajmo nekaj kode našim 3 komponentam:

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; 

Zdaj pa vključimo komponente React Router v aplikacijo:

BrowserRouter : dodajte vzdevek BrowserRouter kot usmerjevalnik v datoteko app.js, da zavijete vse druge komponente. BrowserRouter je nadrejena komponenta in ima lahko samo enega podrejenega.

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

Povezave: Ustvarimo zdaj povezave naših komponent. Komponenta povezave uporablja rekvizite za opis lokacije, do katere naj vodi povezava.

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

Zdaj zaženite aplikacijo na lokalnem gostitelju in kliknite ustvarjeno povezavo. Opazili boste, da se URL-ji spreminjajo glede na vrednost komponente povezave.

BrowserRouter v Reactu

Pot : Komponenta poti nam bo pomagala vzpostaviti povezavo med uporabniškim vmesnikom komponente in URL-jem. Če želite vključiti pot v aplikacijo, dodajte spodnjo kodo v app.js.

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

Komponente so zdaj povezane in s klikom katere koli povezave bo upodobljena ustrezna komponenta. Poskusimo zdaj razumeti rekvizite, povezane s korensko komponento.

    Točno: To se ujema z natančno vrednostjo URL-ja. Na primer, exact path='/about' bo komponento upodobil le, če se natančno ujema s potjo, če pa jo odstranimo iz sintakse, bo uporabniški vmesnik še vedno upodobljen, tudi če je struktura /about /10.Pot: Pot določa ime poti, ki ga dodelimo naši komponenti.
  1. Element se nanaša na komponento, ki bo upodobljena, če se pot ujema.

Opomba: Poti so privzeto vključujoče, kar pomeni, da se lahko več kot ena komponenta poti ujema s potjo URL in upodablja hkrati. Če želimo upodobiti eno komponento, moramo tukaj uporabiti poti.

Poti : Če želite prebrati posamezno komponento, ovijte vse poti znotraj komponente Routes.

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

Skupine preklapljajte po več poteh, jih ponovite in poiščite prvo, ki se ujema s potjo. Tako je upodobljena ustrezna komponenta poti.

Tukaj je naša celotna izvorna koda po dodajanju vseh komponent:

 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>

Zdaj lahko kliknete povezavo in krmarite po različnih komponentah. React Router ohranja uporabniški vmesnik vaše aplikacije sinhroniziran z URL-jem.

gimp odstrani vodni žig

Končno smo uspešno implementirali navigacijo v naši aplikaciji React z uporabo React Routerja.

A, ki uporablja API za zgodovino HTML5 (dogodki pushstate, replacestate in popstate), da vaš uporabniški vmesnik ostane sinhroniziran z URL-jem.

 

osnovno ime: niz

Osnovni URL za vse lokacije. Če se vaša aplikacija streže iz podimenika na vašem strežniku, jo boste želeli nastaviti v ta podimenik. Pravilno oblikovano osnovno ime mora vsebovati prvo poševnico, ne pa končne poševnice.

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

getUserConfirmation: funk

Funkcija za potrditev navigacije. Privzeto uporablja window.confirm.

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

forceRefresh: bool

Če je res, bo usmerjevalnik uporabljal navigacijo po strani za osveževanje celotne strani. Morda boste želeli to uporabiti za posnemanje delovanja tradicionalne strežniško upodobljene aplikacije z osveževanjem celotne strani med krmarjenjem po straneh.

 

keyLength: število

Dolžina lokacije. Ključ. Privzeto je 6.

 

otroci: vozlišče- podrejeni element za upodabljanje.

Opomba: Pri Reactu morate uporabiti en podrejeni element, ker metoda upodabljanja ne more vrniti več kot enega elementa. Če potrebujete več kot en element, jih lahko poskusite zaviti v dodatni ali .

A, ki uporablja zgoščeni del URL-ja (tj. window.location.hash), da vaš uporabniški vmesnik ostane sinhroniziran z URL-jem.

k-nn algoritem

Opomba: zgoščena vrednost ne podpira lokacije zgodovine. Ključ ali lokacija. Država. V prejšnjih različicah smo poskušali zmanjšati vedenje, vendar je bilo robnih primerov, ki jih nismo mogli rešiti. Nobena koda ali vtičnik, ki zahteva to vedenje, ne bo deloval.

Ker je ta tehnologija namenjena podpori samo starejših brskalnikov, vam priporočamo, da namesto tega konfigurirate svoj strežnik za delo.

 

osnovno ime: niz

Osnovni URL za vse lokacije. Pravilno oblikovano osnovno ime mora imeti začetno poševnico, ne pa končne poševnice.

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

getUserConfirmation: funk

Funkcija za potrditev navigacije. Privzeto uporablja window.confirm.

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

hashType: niz

Kodiranje, ki se uporablja za window.location.hash . Razpoložljive vrednosti so:

  • 'poševnica' - ustvari zgoščene vrednosti, kot sta #/ in #/sunshine/lollipops
  • 'noslash' - # in #sonček/lizike . kot ustvarja hash
  • 'hashbang' - ustvari 'ajax crawlable' (google ga je opustil), kot sta #!/ in #!/sunshine/lollipops

Privzeto je 'poševnica'.

otroci: vozlišče

En podrejeni element za upodabljanje.

Zagotavlja deklarativno, dostopno navigacijo po vaši aplikaciji.

 About 

za: niz

Nizovna predstavitev lokacije povezave je ustvarjena z združevanjem lastnosti poti lokacije, iskanja in zgoščevanja.

 

Objekt, ki ima lahko katero koli od naslednjih lastnosti:

    ime poti: Niz, ki predstavlja pot, ki jo želite povezati.najti: Predstavitev niza poizvedbenega parametra.hash:Zgoščena vrednost, ki jo želite vnesti v URL, npr. #A-zgoščena vrednost.država: Stanje naj ostane na mestu.
 

do: funk

Funkcija, v kateri je trenutna lokacija posredovana kot argument in ki mora vrniti predstavitev lokacije kot niz ali predmet.

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

zamenjaj: bool

Če je res, bo klik na povezavo zamenjal trenutni vnos, namesto da bi dodal novega

 entry to the history stack. 

notranja ref.: funk

Od React Routerja 5.1, če uporabljate React 16, ne bi smeli potrebovati te podlage, saj posredujemo referenčno vrednost osnovnemu . Namesto tega uporabite običajni ref.

Omogoča dostop do vgrajene ref.

prehod pred naročilom
 { // `node` refers to the mounted DOM element // or null when unmounted }} /&gt; 

innerRef: RefObject

podatkovne strukture java

Od React Routerja 5.1, če uporabljate React 16, ne bi smeli potrebovati te podpore, ker posredujemo ref osnovnemu . Namesto tega uporabite običajni ref.

Pridobite osnovni ref komponente z uporabo React.createRef.

 let anchorRef = React.createRef() 

komponenta: React.Component

Če želite uporabiti lastno navigacijsko komponento, lahko to storite tako, da jo podate skozi komponento prop.

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

Lahko tudi posredujete rekvizite, na katerih bi radi bili kot je naslov, id, ime razreda itd.

Posebna različica tega bo upodobljenemu elementu dodala atribute sloga, če se ujema z obstoječim URL-jem.

 About 

ime razreda: niz | funk

className je lahko niz ali funkcija, ki vrne niz. Če je uporabljena funkcija className, se aktivno stanje povezave posreduje kot parameter. To je koristno, če želite izključno uporabiti className za neaktivno povezavo.

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

pogosta vprašanja

V React Router v6 bo activeClassName odstranjen in uporabite funkcijo className, da uporabite ime razreda za aktivne ali neaktivne komponente NavLink.

ActiveClassName: niz

razred, da poda element, ko je aktiven. Privzeti dani razred je aktiven. Kombiniran bo s podlago za ime razreda.

 

slog: predmet | funk

style je lahko objekt React.CSSProperties ali funkcija, ki vrne objekt style. Če je uporabljen stil funkcije, se aktivno stanje povezave posreduje kot parameter.

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

V React Router v6 bo aktivni slog odstranjen in morate uporabiti slog funkcije, da uporabite vgrajene sloge za aktivne ali neaktivne komponente NavLink.

Aktivni slog: predmet

Slogi, uporabljeni za element, ko je aktiven.

 <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>

strog: bool

Če je res, bo končna poševnica na poti do lokacije upoštevana pri ugotavljanju, ali se lokacija ujema s trenutnim URL-jem. Za več podrobnosti si oglejte dokumentacijo.

 Events 

isActive: funk

Funkcija za dodajanje dodatne logike za ugotavljanje, ali je povezava aktivna. To je treba uporabiti, ko želite storiti več kot preveriti, ali se ime poti povezave ujema z imenom poti trenutnega URL-ja.

 { 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 

lokacija: objekt

isActive Primerja s trenutno lokacijo zgodovine (običajno trenutni URL brskalnika).

arija-tok: niz

Vrednost atributa area-current, uporabljenega na aktivni povezavi. Razpoložljive vrednosti so:

  • 'stran' - uporablja se za označevanje povezave znotraj nabora povezav za označevanje strani
  • 'Koraki' - uporabljajo se za označevanje povezave znotraj indikatorja korakov za proces, ki temelji na korakih
  • 'lokacija' - uporablja se za označevanje slike, ki je vizualno označena kot trenutna komponenta diagrama poteka
  • 'datum' - uporablja se za označevanje trenutnega datuma v koledarju
  • 'čas' - uporablja se za prikaz trenutnega časa v voznem redu
  • 'true' - uporablja se za označevanje, ali je NavLink aktiven
  • 'false' - uporablja se za preprečevanje odziva podpornih tehnologij na trenutno povezavo (en primer uporabe bi bil preprečiti več oznak trenutnega območja na strani)