일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- register
- 로그인
- jsonwebtoken
- mypage
- Typesciprt
- ui탬플릿
- 관리자페이지
- userManagement
- 밸류즈
- 파생상품평가
- 인증처리
- stock option
- 마이페이지
- 배포
- react
- 스프링시큐리티
- MRC
- 밸류즈 홈페이지
- 이미지 업로드
- 달력 라이브러리
- 빌드 및 배포
- Ajax
- Update
- Styled Components
- RCPS
- 회원가입로직
- 공통메서드
- 캘린더 라이브러리
- 로그인 로직
- Token
- Today
- Total
I T H
[MySchedule project] 2. frontend - 레이아웃 / react- router 설정 본문
이번시간에는 전체 레이아웃 틀을 만들고, react-router-dom hooks를 사용해보겠다.
레이아웃을 설정하기에 앞서 사용할 css 라이브러리를 선택하고, 적용시켜보자!
필자는 tailwindCss를 적용시켜보겠다.
1. TailwindCss 라이브러리 적용
https://tailwindcss.com/docs/installation
Installation - Tailwind CSS
The simplest and fastest way to get up and running with Tailwind CSS from scratch is with the Tailwind CLI tool.
tailwindcss.com
해당 사이트에 들어가면 친절하게 install과정부터 사용법까지 나와있다.
- Using PostCss에 들어가서 install을 해주었음.

1) Install
npm install -D tailwindcss postcss autoprefixernpx tailwindcss init
npx tailwindcss init
2) 설치가 성공적으로 끝났다면 tailwind.config.js 파일이 있을것이다. 아래와 같이 content부분을 바꿔주자.
html, js 파일뿐만 아니라 tsx, jsx 파일도 tailwind 라이브러리를 사용할 예정이기에 추가로 넣어주었음.

/** @type {import('tailwindcss').Config} */
module.exports = {
content: ["./src/**/*.{html,tsx,js,jsx}"],
theme: {
extend: {},
},
plugins: [],
};
3) index.css 에 다음과 같이 넣어주자.
@tailwind base;
@tailwind components;
@tailwind utilities;
4) npm run start를 한번 해주고, 정상 작동 되는지 확인해보자.
아래와 같이 className에 클래스명으로 된 css가 잘 적용되었다면 정상작동!

2. 레이아웃과 react-router-dom 활용하기
1) src - pages폴더와, layout폴더의 기본틀을 먼저 잡기 위해 아래와 같이 index.tsx파일들을 먼저 만듬.

2) Layout 구성과 react-router-dom 훅을 사용해보자!
- react-router 기본구조는 다음과 같다.
<BrowserRouter>
<Routes>
<Route />
</Routes>
</BrowserRouter>
index.tsx에 <App.tsx>를 이미 <BrowserRouter>로 감싸주었기에 App.tsx 에서는 <Routes>안에 <Route>로만 감싸주겠다.
- <Route>에 <Route>로 중첩된 경우 index element로 설정된 컴포넌트 페이지로 이동하게됨.
ex) path = "/" 인 라우트에 안의 라우트로 중첩될 경우 index element 인 MainPage로 이동한다.
- <Route>로 자식<Route>를 감싼 경우 부모element의 함수에 <Outlet >을 설정해놓으면 자식<Route>들은 설정해놓은 Header컴포넌트와 Footer컴포넌트를 상속받게됨.
[App.tsx]
- 페이지 이동 경로 경우의 수는 크게 3가지로 나눌수있음.
관리자만 접속할수있는 화면들,
로그인을 하지않은(즉,인증되지않은) 사용자가 접속할수있는화면,
로그인한(인증처리가된) 사용자가 접속할수있는 화면
(인증된 관리자는 사용자가 접속할수있는 페이지 모두 접속 가능)
import React from "react";
import "./App.css";
import { Outlet, Route, Routes } from "react-router-dom";
import MainPage from "./pages/MainPage";
import Footer from "./layout/Footer";
import Header from "./layout/Header";
import Login from "./pages/Login";
import Register from "./pages/Register";
function Layout() {
return (
<div>
<Header />
<main className="">
<Outlet />
</main>
<Footer />
</div>
);
}
function App() {
return (
<Routes>
<Route path="/" element={<Layout />}>
<Route index element={<MainPage />} />
{/* 인증O - 관리자만 */}
{/* 인증O - 일반유저 - 로그인 했을때 */}
{/* 인증X - 일반유저 - 로그인 안했을때 */}
<Route path="login" index element={<Login />} />
<Route path="register" index element={<Register />} />
</Route>
</Routes>
);
}
export default App;
[결과화면]
- react-router-dom을 활용해 url 에 따라 페이지 이동이 정상적으로 되는걸 볼 수 있다.

'React + Node.js' 카테고리의 다른 글
[MySchedule project] 6. JWT(json web token) / 로그인 로직(1) (2) | 2024.01.30 |
---|---|
[MySchedule project] 5. backend - 회원가입 로직 (0) | 2024.01.25 |
[MySchedule project] 4. frontend - 회원가입 로직 (1) | 2024.01.25 |
[MySchedule project] 3. frontend - redux 세팅(redux-toolkit사용) + typescript (0) | 2024.01.25 |
[MySchedule project] 1. frontend - 타입스크립트 초기 환경설정 (0) | 2024.01.25 |