본문 바로가기

TIL/JavaScript

React Router Dom

yarn add react-router-dom

 

1. 페이지 컴포넌트 작성 -> 다중 페이지

2. Router.js 파일 생성. router를 구성하는 설정 코드 작성

3. App.jsx import 하고 2번 적용 : 주입

4. 페이지 이동

 

# Router.js
import { BrowserRouter, Route, Routes } from "react-router-dom";
import About from "../pages/About";
import Home from "../pages/Home";
import Works from "../pages/Works";
import Contact from "../pages/Contact";

const Router = () => {
    return (
    < BrowserRouter >
        <Routes>
            <Route path="/" element={<Home />} />
            <Route path="/about" element={<About />} />
            <Route path="/contact" element={<Contact />} />
            <Route path="/works" element={<Works />} />
        </Routes>
    </BrowserRouter >
    );
};

export default Router

 

# App.jsx
import './App.css';
import Router from './shared/Router';

function App() {
  return <Router />;
}

export default App;

 

 

유용한 Hook

 

1. useNavigate

다른 페이지로 보내고자 할 때 사용할 수 있다.

예를들어 버튼의 클릭 이벤트 핸들러에 아래와 같이 코드를 작성하면 버튼을 클릭했을 때 우리가 보내고자 하는 path로 

페이지를 이동시킬 수 있다.

import { useNavigate } from "react-router-dom";

const Home = () => {
	const navigate = useNavigate();
    
    return (
    	<button
        	onClick={() => {
            	navigate("/works");
            }}
        >
        	works로 이동
        </button>
    );
};

export default Home;

 

2. useLocation

 

3. Link

Link는 Hook은 아니지만, 꼭 알아야 할 API

 

Link는 html 태그중에서 a 태그의 기능을 대체하는 API. 만약 JSX에서 a 태그를 사용해야 한다면, 반드시 Link를 사용해서

구현해야 한다. 

a 태그를 사용하면 페이지를 이동하면서 브라우저가 새로고침(refresh)되기 때뮨

 

브라우저가 새로고침 되면 모든 컴포넌트가 다시 렌더링 되야 하고, Redux나 useState를 통해 메모리 상에 구축해놓은

모든 상태값이 초기화 됨.

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

function Home() {

    return (
    <>
        <div>Home</div>

        <Link to='/works'>works 페이지로 이동하기</Link>
    </>
    )
}

export default Home

 

4. useParams

URL의 query를 알 수 있음

'TIL > JavaScript' 카테고리의 다른 글

Js 객체 <-> JSON 문자열 변환  (0) 2024.05.24
React Dynamic Route  (0) 2024.05.24
jQuery 기본 문법  (0) 2024.02.19
JS 기본문법 - 함수(2)  (0) 2024.02.18
JS 기본문법 - 함수  (0) 2024.02.17