Jak zbudować aplikację jednostronicową za pomocą React Router

Jak zbudować aplikację jednostronicową za pomocą React Router

Aplikacja jednostronicowa (SPA) to witryna internetowa lub aplikacja internetowa, która dynamicznie przepisuje istniejącą stronę internetową za pomocą nowych informacji z serwera WWW.

W aplikacji React komponenty pobierają zawartość witryny i renderują ją do pojedynczego pliku HTML w twoim projekcie.

React Router pomaga przejść do wybranego komponentu i renderuje go w pliku HTML. Aby z niego korzystać, musisz wiedzieć, jak skonfigurować i zintegrować React Router z aplikacją React.

Jak zainstalować router React

Aby zainstalować React Router w swoim projekcie React za pomocą npm, menedżera pakietów JavaScript, uruchom następujące polecenie w katalogu projektu:

npm i react-router-dom

Alternatywnie możesz pobrać pakiet za pomocą Yarn, menedżera pakietów, który umożliwia instalowanie pakietów bibliotek w trybie offline.

Aby zainstalować React Router za pomocą Yarn, uruchom to polecenie:

yarn add react-router-dom@6

Konfigurowanie routera reagowania

Aby skonfigurować React Router i udostępnić go w swojej aplikacji, zaimportuj BrowserRouter z React -router-dom do pliku index.js , a następnie opakuj komponent aplikacji w element BrowserRouter :

import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
import { BrowserRouter } from 'react-router-dom';

const root = ReactDOM.createRoot(document.getElementById('root'));


root.render(
  <BrowserRouter>
    <App />
  </BrowserRouter>
);

Zapakowanie komponentu aplikacji w element BrowserRouter zapewnia całej aplikacji pełny dostęp do możliwości routera.

Routing do innych komponentów

Po skonfigurowaniu routera w aplikacji należy przystąpić do tworzenia komponentów aplikacji, kierowania ich i renderowania. Poniższy kod importuje i tworzy komponenty o nazwach „Home”, „Informacje” i „Blog”. Importuje również elementy Route i Routes z react-router-dom.

Zdefiniujesz swoje Trasy w komponencie aplikacji :

import { Routes, Route } from 'react-router-dom';
import Home from './Home';
import About from './About';
import Blog from './Blog';

function App() {
    return (
      <Routes>
        <Route path='/' element={ <Home /> } />
        <Route path='/about' element={ <About /> } />
        <Route path='/blog' element={ <Blog /> }/>
      </Routes>
    )
}

export default App;

Komponent aplikacji jest głównym komponentem, który renderuje cały kod, który napisałeś w innych komponentach.

Element Routes to element nadrzędny, który otacza poszczególne trasy utworzone w komponencie aplikacji. Element Route tworzy pojedynczą trasę. Wymaga dwóch atrybutów właściwości: ścieżki i elementu .

Atrybut path definiuje ścieżkę URL zamierzonego komponentu. Pierwsza trasa w powyższym bloku kodu używa ukośnika odwrotnego (/) jako ścieżki. Jest to specjalna trasa, którą React wyrenderuje jako pierwszą, więc komponent Home renderuje się po uruchomieniu aplikacji. Nie myl tego systemu z implementacją renderowania warunkowego w swoich React Components. Możesz nadać temu atrybutowi ścieżki dowolną nazwę.

Atrybut element definiuje komponent, który będzie renderowany przez Trasę .

Komponent link jest komponentem React Router używanym do poruszania się po różnych trasach. Te komponenty uzyskują dostęp do różnych tras, które utworzyłeś.

Na przykład:

import { Link } from 'react-router-dom';

function Home() {
    return (
      <div>
        <Link to='/about'>About page</Link>
        <Link to='/blog'>Blog page</Link>
        <h1>This is the Home Page<h1/>
      </div>
    )
}


export default Home;

Komponent łącza jest prawie identyczny z tagiem zakotwiczenia HTML <a> , po prostu używa atrybutu o nazwie „to” zamiast „href”. Komponent łącza nawiguje do Trasy z odpowiednią nazwą ścieżki jako jej atrybutem i renderuje komponent Trasy.

Routing zagnieżdżony i sposób jego implementacji

Router React obsługuje routing zagnieżdżony, umożliwiając łączenie wielu tras w jedną. Jest to używane głównie wtedy, gdy istnieje pewne podobieństwo w ścieżkach URL Tras.

Po utworzeniu komponentów, które chcesz kierować, opracujesz indywidualne Trasy dla każdego z nich w komponencie aplikacji .

Na przykład:

import { Routes, Route } from 'react-router-dom';
import Articles from './Articles';
import NewArticle from './NewArticle';
import ArticleOne from './ArticleOne';

function App() {
    return (
      <Routes>
        <Route path='/article' element={ <Articles /> }/>
        <Route path='/article/new' element={ <NewArticle /> }/>
        <Route path='/article/1' element={ <ArticleOne /> }/>
      </Routes>
    )
}


export default App;

Powyższy blok kodu importuje i kieruje utworzone komponenty Articles , NewArticle i ArticleOne . Istnieją pewne podobieństwa w ścieżkach adresów URL między trzema trasami.

Ścieżka trasy NewArticle zaczyna się tak samo jak ścieżka ścieżki artykułów , z dodanym ukośnikiem odwrotnym (/) i słowem „nowy”, tj. (/new). Jedyną różnicą między nazwami ścieżek ścieżki Artykułów i ścieżki ArtykułOne jest ukośnik (/1) na końcu nazwy ścieżki komponentu ArtykułOne .

Możesz zagnieździć trzy Trasy zamiast pozostawiać je w obecnym stanie.

jak tak:

import { Routes, Route } from 'react-router-dom';
import Articles from './Articles';
import NewArticle from './NewArticle';
import ArticleOne from './ArticleOne';

function App() {
    return (
      <Routes>
        <Route path='/article'>
          <Route index element={ <Articles /> }/>
          <Route path='/article/new' element={ <NewArticle /> }/>
          <Route path='/article/1' element={ <ArticleOne /> }/>
        </Route>
      </Routes>
    )
}


export default App;

Umieściłeś trzy indywidualne Trasy w jednym elemencie Trasy . Należy zauważyć, że nadrzędny element Route ma tylko atrybut ścieżki i nie ma atrybutu elementu definiującego komponent do renderowania. Atrybut index w pierwszym podrzędnym elemencie Route określa, że ​​ta trasa jest renderowana podczas nawigowania do ścieżki adresu URL nadrzędnej trasy .

Aby Twój kod był lepszy i łatwiejszy w utrzymaniu, powinieneś zdefiniować swoje Trasy w komponencie i zaimportować je do komponentu aplikacji w celu użycia.

Na przykład:

import { Routes, Route } from 'react-router-dom';
import Articles from './Articles';
import NewArticle from './NewArticle';
import ArticleOne from './ArticleOne';

function ArticleRoutes() {
    return (
      <Routes>
        <Route index element={ <Articles /> }/>
        <Route path='/article/new' element={ <NewArticle /> }/>
        <Route path='/article/1' element={ <ArticleOne /> }/>
      </Routes>
    )
}


export default ArticleRoutes;

Komponent w powyższym bloku kodu zawiera zagnieżdżone trasy, które wcześniej znajdowały się w komponencie aplikacji. Po utworzeniu komponentu należy go zaimportować do komponentu aplikacji i skierować za pomocą pojedynczego elementu Route .

Na przykład:

import { Routes, Route } from 'react-router-dom';
import ArticleRoutes from './ArticleRoutes';

function App() {
    return (
      <Routes>
        <Route path='/article/*' element={ <ArticleRoutes /> }>
      </Routes>
    )
}


export default App;

W końcowym komponencie Route dodane symbole odwrotnego ukośnika i gwiazdki na końcu nazwy ścieżki zapewniają, że nazwa ścieżki odpowiada dowolnej nazwie ścieżki, która zaczyna się od (/article) .

React Router to więcej

Powinieneś być już zaznajomiony z podstawami tworzenia aplikacji jednostronicowych w React.js przy użyciu React Router.

W bibliotece React Router dostępnych jest wiele innych funkcji, które zwiększają dynamikę tworzenia aplikacji internetowych przez programistów.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *