티스토리 뷰
페이지 나누는 법 (리액트 사용)
1. 컴포넌트 만들어서 상세페이지 내용 채움
2. 누가 /detail접속하면 그 컴포넌트 보여줌
이걸 도와주는 라이브 러리를 설치한다. (react-router-dom)
npm install react-router-dom@6
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<BrowserRouter>
<App />
</BrowserRouter>
</React.StrictMode>
);
BrowerRouter 태그로 App을 감싸준다.
그 후에 App.js에 다음 라이브러리를 임폴트 시킨다.
import { Routes, Route, Link } from 'react-router-dom'
사용하는 방법은 이렇다
return (
<div className="App">
<Routes>
<Route path="/" element={<div>메인페이지</div>} />
<Route path="/detail" element={<div>상세페이지</div>} />
</Routes>
import './App.css';
import {Navbar,Container,Nav,Button,Row,Col} from 'react-bootstrap';
import data from './data.js'
import { useState } from 'react';
import { Routes, Route, Link } from 'react-router-dom'
function App() {
let [shoes] = useState(data);
return (
<div className="App">
<Navbar bg="dark" data-bs-theme="dark">
<Container>
<Navbar.Brand href="#home">Navbar</Navbar.Brand>
<Nav className="me-auto">
<Nav.Link href="#home">Home</Nav.Link>
<Nav.Link href="#features">Features</Nav.Link>
<Nav.Link href="#pricing">Pricing</Nav.Link>
</Nav>
</Container>
</Navbar>
<Link to="/">홈</Link>
<Link to="/detail">상세페이지</Link>
<Routes>
<Route path="/" element={
<>
<div className="main-bg"></div>s
<div className="container">
<div className="row">
{
shoes.map((a,index)=>{
return (<Card shoes={a} index={index}/>);
})
}
</div>
</div>
</>
} />
<Route path="/detail" element={<div>상세페이지</div>} />
</Routes>
</div>
);
}
function Card(props){
console.log(props.index);
return(
<div className="col-md-4">
<img src={process.env.PUBLIC_URL + "/shoes"+(props.index+1)+".jpeg"} />
<h4>{props.shoes.title}</h4>
<p>{props.shoes.content}</p>
</div>
);
}
export default App;
헤더를 제외한 코드를 Router 단위로 쪼개주면 사용하기 편리해진다.
<Link>태그를 이용해서 카테고리를 나눌 수 있다.
react-router-dom 라이브러리에는 페이지 이동을 도와주는 navigate도 사용할 수 있다.
import { Routes, Route, Link, useNavigate, Outlet } from 'react-router-dom'
<Navbar bg="dark" data-bs-theme="dark">
<Container>
<Navbar.Brand href="#home">Navbar</Navbar.Brand>
<Nav className="me-auto">
<Nav.Link onClick={()=>{navigate('/')}}>Home</Nav.Link>
<Nav.Link href="#features">Features</Nav.Link>
<Nav.Link onClick={()=>{navigate('/detail')}}>detail</Nav.Link>
</Nav>
</Container>
</Navbar>
onClick 이번테로 만들면 원하는 url로 이동이 가능해진다. navigate(-1)을 입력하면 이전페이지로 이동도 된다.
404 페이지는 *를 이용한다. 입력한 Route 외에는 모두 이곳으로 간다.
<Route path="*" element={
<div>없는 페이지예요</div>
} />
3. Nested Routes
<Route path="/about" element={<About />}>
<Route path="member" element={<About />} />
<Route path="location" element={<About />} />
</Route>
<Route path="/about/member" element={<About />} />
<Route path="/about/location" element={<About />} />
위 아래는 같은 문법이다.
function About(){
return(
<div>
회사 정보임
<Outlet></Outlet>
</div>
);
}
Route안에 Route는 해당 컴포넌트 안에 Outlet 태그를 달아주는 곳에 표시 된다.
'dev_공부일지 > React' 카테고리의 다른 글
styled-component (0) | 2024.02.26 |
---|---|
파라미터 받기 (0) | 2024.02.26 |
import,export (0) | 2024.02.23 |
input 다루기 (0) | 2024.02.23 |
props (0) | 2024.02.23 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 스프링부트
- 백엔드 개발자 역량
- SpringBoot
- rejectValue
- exception
- HTTP
- 백엔드 개발자 공부
- 향해플러스백엔드
- 로그인
- filter
- Intercepter
- react실행
- hypertexttransferprotocol
- reject
- React
- BindingResult
- 인터셉터
- JPA
- 항해99
- 예외처리
- jpa api
- 향해99
- thymleaf
- 스프링공부
- 향해플러스
- ArgumentResolver
- Java
- 컨트
- 리터럴
- 항해플러스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함