logo

BrowserRouter у React

React Router — стандартна бібліотека для маршрутизації в React. Він забезпечує навігацію між представленнями різних компонентів програми React, дозволяє змінювати URL-адресу браузера та підтримує синхронізацію інтерфейсу користувача з URL-адресою.

Щоб зрозуміти, як працює React Router, давайте створимо просту програму для React. Додаток міститиме компоненти «дім», «Про» та «Контакт». Ми будемо використовувати React Router для навігації між цими компонентами.

npx create-react-app

BrowserRouter у React

Ваше середовище розробки готове. Давайте тепер встановимо React Router у нашу програму.

Маршрутизатор React : React Router можна встановити у ваш додаток React через npm. Виконайте наведені нижче кроки, щоб налаштувати маршрутизатор у своїй програмі React:

Крок 1: компакт-диск у каталозі вашого проекту, тобто ., java.

Крок 2: Використовуйте таку команду, щоб встановити React Router:

npm install - -save react-router-dom

BrowserRouter у React

Після встановлення react-router-dom додайте його компоненти до програми React.

Додавання компонентів маршрутизатора React:

Основними компонентами React Router є:

    BrowserRouter:BrowserRouter — це реалізація маршрутизатора, яка використовує API історії HTML5 (події pushstate, replacestate та popstate), щоб підтримувати синхронізацію інтерфейсу користувача з URL-адресою. Це батьківський компонент, який використовується для зберігання всіх інших компонентів.Маршрут:Це новий компонент, представлений у v6 та оновлений компонент. Основними перевагами Switch Over Routes є:

Замість послідовного проходження маршрути вибираються на основі найкращого збігу.

    Маршрут: маршрут – це умовно показаний компонент, який надає інтерфейс користувача, якщо його шлях збігається з поточною URL-адресою.Посилання: Компонент Links створює посилання для різних маршрутів і реалізує навігацію в програмі. Він працює як тег прив’язки HTML.

Щоб додати компоненти React Router до вашої програми, відкрийте каталог проекту в редакторі, який ви використовуєте, і перейдіть до файлу app.js. Тепер додайте наведений нижче код до app.js.

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

Примітка. BrowserRouter має псевдонім Router.

Використання React Router: Щоб використовувати React Router, давайте спочатку створимо кілька компонентів у програмі React. У каталозі проекту створіть папку з назвою 'components' у папці 'src' і додайте 3 файли з іменами home.js, about.js і contact.js у папку 'components'.

BrowserRouter у React

Давайте додамо трохи коду до наших 3 компонентів:

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; 

Тепер давайте включимо компоненти React Router у додаток:

BrowserRouter : додайте псевдонім BrowserRouter як маршрутизатор до вашого файлу app.js, щоб обернути всі інші компоненти. BrowserRouter є батьківським компонентом і може мати лише одного дочірнього компонента.

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

Посилання: Тепер створимо зв’язки наших компонентів. Компонент «Посилання» використовує атрибути для опису місця, до якого має вести посилання.

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

Тепер запустіть свою програму на локальному хості та натисніть на створене посилання. Ви помітите, що URL-адреси змінюються відповідно до значення компонента посилання.

BrowserRouter у React

Маршрут : Компонент маршруту допоможе нам встановити зв’язок між інтерфейсом користувача компонента та URL-адресою. Щоб включити маршрут у додаток, додайте наведений нижче код до свого app.js.

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

Тепер компоненти з’єднані, і клацання будь-якого посилання відобразить відповідний компонент. Давайте тепер спробуємо зрозуміти атрибути, пов’язані з кореневим компонентом.

    Точний: це точно збігається з URL-адресою. Наприклад, exact path='/about' візуалізує компонент, лише якщо він точно відповідає шляху, але якщо ми видалимо його з синтаксису, інтерфейс інтерфейсу буде відображено, навіть якщо структура /about /10.шлях: Path визначає шлях, який ми призначаємо нашому компоненту.
  1. Елемент посилається на компонент, який відображатиметься, якщо шлях збігається.

Примітка. За замовчуванням маршрути включені, що означає, що кілька компонентів маршруту можуть відповідати URL-шляху та відтворюватися одночасно. Якщо ми хочемо відобразити один компонент, нам потрібно використовувати тут маршрути.

Маршрути : Щоб прочитати один компонент, оберніть усі маршрути всередину компонента Routes.

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

Перемикайте групи між кількома маршрутами, повторюйте їх і знайдіть перший, який відповідає шляху. Таким чином, відображається відповідний компонент шляху.

Ось наш повний вихідний код після додавання всіх компонентів:

 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>

Тепер ви можете натиснути на посилання та перейти до різних компонентів. React Router підтримує синхронізацію інтерфейсу користувача програми з URL-адресою.

Нарешті, ми успішно реалізували навігацію в нашій програмі React за допомогою React Router.

A, який використовує API історії HTML5 (події pushstate, replacestate та popstate), щоб підтримувати синхронізацію вашого інтерфейсу користувача з URL-адресою.

 

базове ім'я: рядок

Базовий URL для всіх місць. Якщо ваша програма обслуговується з підкаталогу на вашому сервері, ви захочете встановити її в цьому підкаталозі. Правильно відформатована базова назва має містити скісну риску на початку, але не скісну риску в кінці.

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

getUserConfirmation: функц

Функція для підтвердження навігації. За умовчанням використовується window.confirm.

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

forceRefresh: bool

Якщо встановлено значення true, маршрутизатор використовуватиме повносторінкове оновлення навігації. Можливо, ви захочете використати це, щоб імітувати, як традиційна серверна програма буде працювати з повним оновленням сторінки між навігацією по сторінках.

 

keyLength: число

Довжина розташування. ключ. За замовчуванням 6.

 

діти: вузол- дочірній елемент для візуалізації.

Примітка: у React ви повинні використовувати один дочірній елемент, оскільки метод render не може повернути більше одного елемента. Якщо вам потрібно більше одного елемента, ви можете спробувати обернути їх у додатковий або .

bash для циклу

A, який використовує хеш-частину URL-адреси (тобто window.location.hash), щоб підтримувати синхронізацію вашого інтерфейсу користувача з URL-адресою.

Примітка: хеш не підтримує місцезнаходження історії. Ключ або місцезнаходження. Держава. У попередніх версіях ми намагалися зменшити поведінку, але були крайні випадки, які ми не могли вирішити. Будь-який код або плагін, які вимагають такої поведінки, не працюватимуть.

Оскільки ця технологія призначена для підтримки лише старіших веб-переглядачів, ми рекомендуємо вам замість цього налаштувати свій сервер для роботи.

перетворити strin на int
 

базове ім'я: рядок

Основна URL-адреса для всіх місць. Правильно відформатована базова назва повинна мати скісну риску на початку, але не скісну риску в кінці.

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

getUserConfirmation: функц

Функція для підтвердження навігації. За умовчанням використовується window.confirm.

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

hashType: рядок

Кодування, яке використовується для window.location.hash . Доступні значення:

  • 'slash' - створює хеші типу #/ і #/sunshine/lollipops
  • 'noslash' - # і #sunshine/lollipops . як хеш створює
  • 'hashbang' - створює хеші 'ajax crawlable' (не рекомендовані google), наприклад #!/ і #!/sunshine/lollipops

За замовчуванням 'коса лінія'.

діти: вузол

Один дочірній елемент для візуалізації.

Забезпечує декларативну доступну навігацію вашою програмою.

 About 

до: рядок

Рядкове представлення розташування посилання створюється шляхом поєднання імені шляху розташування, пошуку та хеш-властивостей.

 

Об’єкт, який може мати будь-яку з таких властивостей:

    шлях: Рядок, що представляє шлях, який потрібно зв’язати.знайти: Рядкове представлення параметра запиту.хеш:Хеш, який слід додати в URL-адресу, наприклад, #A-хеш.стан: Держава залишатися на місці.
 

до: функц

Функція, у якій поточне розташування передається як аргумент і яка має повертати представлення розташування у вигляді рядка або об’єкта.

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

замінити: bool

Якщо значення true, клацання посилання замінить поточний запис замість додавання нового

 entry to the history stack. 

внутрішня посилання: функ

Починаючи з React Router 5.1, якщо ви використовуєте React 16, вам не потрібен цей проп, оскільки ми пересилаємо посилання базовому . Замість цього використовуйте звичайне посилання.

Дозволяє отримати доступ до вбудованого посилання компонента.

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

innerRef: RefObject

Починаючи з React Router 5.1, якщо ви використовуєте React 16, вам не потрібен цей проп, тому що ми пересилаємо посилання базовому . Замість цього використовуйте звичайне посилання.

Отримайте базове посилання компонента за допомогою React.createRef.

 let anchorRef = React.createRef() 

компонент: React.Component

Якщо ви бажаєте використовувати власний компонент навігації, ви можете зробити це, передавши його через властивість компонента.

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

Ви також можете передати реквізит, на якому ви хотіли б бути наприклад назва, ідентифікатор, назва класу тощо.

Спеціальна версія додасть атрибути стилю до відтвореного елемента, якщо він відповідає існуючій URL-адресі.

 About 

className: рядок | функц

className може бути або рядком, або функцією, яка повертає рядок. Якщо використовується функція className, активний стан посилання передається як параметр. Це корисно, якщо ви хочете виключно застосувати className до неактивного посилання.

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

поширені запитання

У React Router v6 ActiveClassName буде видалено, і ви повинні використовувати функцію className, щоб застосувати назву класу до активних або неактивних компонентів NavLink.

ActiveClassName: рядок

клас для надання елементу, коли він активний. Типовий клас є активним. Він буде об’єднаний із властивістю імені класу.

 

стиль: об'єкт | функц

стиль може бути об’єктом React.CSSProperties або функцією, яка повертає об’єкт стилю. Якщо використовується стиль функції, активний стан посилання передається як параметр.

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

У React Router v6 активний стиль буде видалено, і ви повинні використовувати стиль функції, щоб застосувати вбудовані стилі до активних або неактивних компонентів NavLink.

Активний стиль: Об'єкт

Стилі, застосовані до елемента, коли він активний.

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

строгий: бул

Якщо значення true, кінцева коса риска в назві шляху до розташування буде врахована під час визначення відповідності розташування поточній URL-адресі. Додаткову інформацію дивіться в документації.

 Events 

isActive: функц

Функція для додавання додаткової логіки, щоб визначити, чи посилання активне. Це слід використовувати, якщо ви хочете зробити більше, ніж перевірити, чи шлях до посилання збігається з шляхом до поточної 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 

місце розташування: об'єкт

isActive Порівнює з поточним розташуванням історії (зазвичай поточною URL-адресою браузера).

арія-ток: струн

Значення атрибута area-current, що використовується в активному посиланні. Доступні значення:

  • 'сторінка' - використовується для позначення посилання в наборі посилань на сторінки
  • «Кроки» — використовується для позначення посилання в індикаторі кроків для покрокового процесу
  • 'location' - використовується для позначення зображення, яке візуально виділено як поточний компонент блок-схеми
  • 'дата' - використовується для позначення поточної дати в календарі
  • 'time' - використовується для вказівки поточного часу в розкладі
  • 'true' - використовується для вказівки, чи активний NavLink
  • «false» — використовується для запобігання реагування допоміжних технологій на поточне посилання (один варіант використання — запобігання появі кількох тегів поточної області на сторінці)