1. 라이브러리 설치
부트스트랩은 트위터에서 개발한 프론트앤트 프레임워크이다. 부트스트랩을 사용하면 미리 만들어둔 CSS와 javascript를 편하게 가져다 쓸 수 있다.
// 부트스트랩 설치 라이브러리 npm i react-bootstrap bootstrap // 부트스트랩 아이콘을 리액트 컴포넌트로 사용할 수 있게 해주는 라이브러리 npm i react-bootstrap-icons
index.js
import { configureStore } from "@reduxjs/toolkit"; import React from "react"; import ReactDOM from "react-dom/client"; import { Provider } from "react-redux"; import App from "./App"; import reducer from "./store"; import "bootstrap/dist/css/bootstrap.min.css"; const root = ReactDOM.createRoot(document.getElementById("root")); const store = configureStore({ reducer: reducer, }); root.render( <Provider store={store}> <App /> </Provider> );
index.js 에 부트스트랩 라이브러리를 임포트 해준다.
2. 리액트 부트스트랩
리액트 부트스트랩 사이트에서 원하는 컴포넌트를 고른다.
app.js
import Container from 'react-bootstrap/Container'; import Navbar from 'react-bootstrap/Navbar'; function App() { return ( <Navbar className="bg-primary" > <Container> <Navbar.Brand href="#home">Navbar with text</Navbar.Brand> <Navbar.Toggle /> <Navbar.Collapse className="justify-content-end"> <Navbar.Text> Signed in as: <a href="#login">Mark Otto</a> </Navbar.Text> </Navbar.Collapse> </Container> </Navbar> ); } export default App;
app.js에 부트스트랩 코드를 넣는다.
부트스트랩의 네브바를 적용할 수 있다.
3. 네브바 링크 연결하기
app.js
import { Nav, Navbar } from "react-bootstrap"; import { BrowserRouter, Link } from "react-router-dom"; function App() { return ( <div> <Navbar bg="dark" expand="lg" variant="dark"> <Link to="/" className="navbar-brand"> 블로그홈 </Link> <Navbar.Toggle aria-controls="basic-navbar-nav" /> <Navbar.Collapse id="basic-navbar-nav"> <Nav className="mr-auto"> <Link to="/saveForm" className="nav-link"> 글쓰기 </Link> <Link className="nav-link">로그아웃</Link> <Link to="/loginForm" className="nav-link"> 로그인 </Link> <Link to="/joinForm" className="nav-link"> 회원가입 </Link> </Nav> </Navbar.Collapse> </Navbar> </div> ); } export default App;
블로그를 만들기 위해 네브바에 링크를 연결한다.
오류가 발생한다.
이 오류는 react-router-dom 의 Link 컴포넌트가 basename 이라는 속성을 useContext 훅을 통해 가져오려고 할 때 발생하는 문제로, useContext 의 반환 값이 null이기 때문에 발생한다. 이는 BrowserRouter 나 Router 컴포넌트로 애플리케이션을 감싸지 않아서 발생할 수 있다. Link 와 같은 react-router-dom 컴포넌트를 사용할 때, 반드시 라우터 컴포넌트로 감싸야 한다.
index.js
import { configureStore } from "@reduxjs/toolkit"; import React from "react"; import ReactDOM from "react-dom/client"; import { Provider } from "react-redux"; import App from "./App"; import reducer from "./store"; import "bootstrap/dist/css/bootstrap.min.css"; import { BrowserRouter } from "react-router-dom"; const root = ReactDOM.createRoot(document.getElementById("root")); const store = configureStore({ reducer: reducer, }); root.render( <BrowserRouter> <Provider store={store}> <App /> </Provider> </BrowserRouter> );
index.js를 BrowserRouter 로 감싼다.
브라우저 사이즈에 따라서 동적으로 적용되는 네브바를 부트스트랩을 사용해 쉽게 만들 수 있다.
Share article