1. SPA
SPA (Single Page Application)
- 페이지가 한 개인 애플리케이션2. Routing
라우팅(Routing)
이란 다른 경로(url 주소)에 따라 다른 View(화면)를 보여주는 것3. React Router
npm install react-router-dom --save
import React from 'react';
import { BrowserRouter, Routes, Route } from 'react-router-dom'
import Login from '../pages/Login/Login';
import Main from '../pages/Main/Main';
import '../styles/reset.css';
export default function Router(){
return(
<BrowserRouter>
<Routes>
<Route path="/" element={<Login />} />
<Route path="/main" element={<Main />} />
</Routes>
</BrowserRouter>
);
}
ReactDOM.render(<Router />, document.getElementById('root'));
<App />
컴포넌트가 보여지고 있습니다. (또는 Login 컴포넌트, Main 컴포넌트)index.js
를 수정해야 합니다.<App />
컴포넌트 대신에 routing을 설정한 컴포넌트(<Router />
)로 변경해야 합니다.Route 이동하는 방법은 두 가지가 있습니다.
<Link>
컴포넌트 사용하는 방법useNavigate
로 구현하는 방법<Link>
컴포넌트 사용하는 방법import React from "react";
import { Link } from "react-router-dom";
function Login() {
return (
<div>
<Link to="/signup">회원가입</Link>
</div>
);
}
export default Login;
Router.js
에서 설정한 path로 이동하는 첫 번째 방법은 <Link />
컴포넌트를 사용하는 방법입니다.react-router-dom
에서 제공하는 <Link />
컴포넌트는 DOM에서 <a>
로 변환(Compile) 됩니다.<a>
태그와 마찬가지로 <Link />
컴포넌트도 지정한 경로로 바로 이동시켜주는 기능을 합니다.<a>
vs. <Link />
<a>
- 외부 사이트로 이동하는 경우<Link />
- 프로젝트 내에서 페이지 전환하는 경우useNavigate
로 구현하는 방법import React from "react";
import { useNavigate } from "react-router-dom";
function Login() {
const navigate = useNavigate();
const goToMain = () => {
navigate("/main");
};
// 실제 활용 예시
// const goToMain = () => {
// if(response.message === "valid user"){
// navigate('/main');
// } else {
// alert("가입된 회원이 아닙니다. 회원가입을 먼저 해주세요.")
// navigate('/signup');
// }
// }
return (
<div>
<button className="loginBtn" onClick={goToMain}>
로그인
</button>
</div>
);
}
export default Login;
<Link />
를 사용하지 않고 함수 호출을 통해 페이지를 이동하는 방법도 있습니다.goToMain
함수에서 구현된 것처럼, useNavigate
훅을 통해 페이지 이동할 수 있습니다.useNavigate
훅을 실행하면 페이지 이동을 할 수 있게 해주는 함수를 반환합니다. 해당 함수를 navigate
라는 변수에 저장합니다.navigate
의 인자로 Router.js
에서 설정한 path를 넘겨주면, 해당 경로로 이동할 수 있습니다.<Link />
**useNavigate**
useNavigate
훅을 활용하여 구현합니다.