아랄라랄라
R 스토리
아랄라랄라
전체 방문자
오늘
어제
  • All (198)
    • Web (145)
      • Markup | WEB (9)
      • Styles (45)
      • javascript (32)
      • jquery (28)
      • vue (16)
      • react (10)
      • more (5)
    • IT (31)
      • CS (3)
      • git hub (5)
      • UI | UX (18)
      • more (5)
    • ETC (22)
      • 이슈노트 (12)
      • 스터디 (10)
      • 아랄라 ☞☜ (0)
      • JOB🛠 (0)

인기 글

반응형
hELLO · Designed By 정상우.
아랄라랄라

R 스토리

[리액트] Router
Web/react

[리액트] Router

2022. 12. 15. 16:16

리액트는 SPA(Single Page Application) 방식

새로운 페이지를 로드하지 않고 하나의 페이지 안에서 필요한 데이터만 가져오는 형태이다.

 

 

 

1) Router

  • 분배하는 기능을 수행하는 소프트웨어나 하드웨어
  • 대표적인 라우터로는 아이피공유기가 있다.
  • React의 Router는 URL에 의해 컴포넌트를 분배하는 기능을 한다.
  • HTML5에서 Javascript에 추가된 기능중 history객체를 통해 URL을 변조하는 기능이 있다.
  • 리액트의 Router는 이 기능을 활용하여 현재 페이지의 URL을 다양하게 변조하여 거기에 각각의 컴포넌트를 분배한다.

 

2) SPA 개발의 장점

  • 페이지 이동 없이 JS에 의해 화면이 갱신되므로 실제로 네트워크 통신이 발생하지 않아 실행 속도가 빠르다.

 

3) SPA 개발의 단점

  • JS코드가 비대해 질 수 있다. 코드 스플리팅 기법으로 해결가능(코드 분할 작성)
  • 하나의 HTML이므로 SEO에 취약하다 (SSR로 해결 가능)
  • SSR(서버사이드렌더링) = React + Node / React + PHP / React + Java(Spring)

 

 

react-router-dom

- SPA앱을 만들 때 사용한다.

- url에 따라 실행할 Javascript를 분기한다.

yarn add react-router-dom

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

index.js

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

 

 

App.js

import React from 'react';
import { Link, Routes, Route } from 'react-router-dom';
import Home from './pages/Home';
import About from './pages/About';
import Main from './pages/Main';
import Error404 from './pages/Error404';

function App() {
    return (
        <div>
            <h1>02. Simple SPA😀</h1>
            <hr />

            {/* 링크 구성 부분 */}
            <nav>
                <Link to="/">[Home]</Link>
                <Link to="/about">[About]</Link>
                <Link to="/main">[Main]</Link>
            </nav>
            
            <hr />

            {/* 페이지 역할을 할 컴포넌트를 명시 */}
            <Routes>
                {/* 첫 페이지로 사용되는 컴포넌트의 경우 exact={true} 명시 */}
                {/* 첫 페이지로 사용되는 컴포넌트는 path에 '/' 권장 */}
                <Route path="/" element={<Home />} exact={true} />
                <Route path="/about" element={<About />} />
                
                {/* 서브라이팅 사용 */}
                <Route path="/main/*" element={<Main />} />
                
                {/* path 속성 없이 Route 지정 -> 지정되지 않은 모든 요청에 반응. 단 Routes블록의 맨 마지막에 배치해야 함 */}
                <Route path="/*" element={<Error404/>} />
            </Routes>
        </div>
    );
}

export default App;

 

 

 

 

 

 

728x90
저작자표시 (새창열림)

'Web > react' 카테고리의 다른 글

[리액트] Props  (0) 2023.01.02
[리액트] Components  (0) 2022.12.15
[리액트] JSX 문법  (0) 2022.12.15
[리액트] 시작하기  (0) 2022.12.15
[React] 리액트 작업환경 준비하기  (0) 2019.07.04

티스토리툴바