기술개발/React, Frontend
리액트 화면 꾸미기
한승욱
2021. 3. 3. 23:22
반응형
(주의!!)본 글은 현재 시점에서는 레거시한 '클래스 컴포넌트'를 공부하며 작성한 글입니다.
부트스트랩
- 부트스트랩은 웹사이트를 쉽게 만들 수 있게 도와주는 HTML, CSS, JS 프레임워크
- 유명한 반응형 디자인을 제공해준다.(하나의 CSS로 휴대폰, 태블릿, 데스크탑까지 다양한 기기에서 작동)
설치
npm install --save bootstrap
추가
# src/index.js
import 'bootstrap/dist/css/bootstrap.css';
헤더
이후에 부트스트랩 사이트 → Docs → 원하는 샘플 가져오기
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown
</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
</li>
</ul>
<form class="d-flex">
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success" type="submit">Search</button>
</form>
</div>
</div>
</nav>
- 헤더에 넣어주기
- class로 네이밍되어있는 것을 전부 className으로 바꿔주기
- a 태그 부분을 Link 태그로 바꿔주기
# components/layout/header.jsx
import React from 'react';
import { Link } from 'react-router-dom';
class Header extends React.Component {
render() {
return (
<>
<nav className="navbar navbar-expand-lg navbar-light bg-light">
<div className="container-fluid">
<Link to="/" className="navbar-brand">
React
</Link>
<button
className="navbar-toggler"
type="button"
data-bs-toggle="collapse"
data-bs-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent"
aria-expanded="false"
aria-label="Toggle navigation"
>
<span className="navbar-toggler-icon">..</span>
</button>
<div
className="collapse navbar-collapse"
id="navbarSupportedContent"
>
<ul className="navbar-nav me-auto mb-2 mb-lg-0">
<li className="nav-item">
<Link to="/home" className="nav-link">
Home
</Link>
</li>
<li className="nav-item">
<Link to="/about" className="nav-link">
About
</Link>
</li>
<li className="nav-item">
<Link to="/contact" className="nav-link">
Contact
</Link>
</li>
</ul>
</div>
</div>
</nav>
</>
);
}
}
export default Header;
바디(content)
역시 bootstrap에서 샘플로 가져옴. 이번에는 listgroup을 가져옴
<ul class="list-group">
<li class="list-group-item">An item</li>
<li class="list-group-item">A second item</li>
<li class="list-group-item">A third item</li>
<li class="list-group-item">A fourth item</li>
<li class="list-group-item">And a fifth one</li>
</ul>
- contact.jsx에 넣어줌
- 역시 class를 className으로 바꿔줌
- 잘 바뀐 것 확인 가능
결론 및 주의해야 할점
- 실제 간단한 서비스를 만들때는 부트스트랩 등 프레임워크를 이용하여 화면 꾸미는 것도 쉽게 가능하다.
- 리액트에서는 class → className, a → Link 로 바꿔줘야한다는 점만 주의하면 된다.
반응형