/detail로 접속하면 상세페이지 보여주고
/cart로 접속하면 장바구니페이지 보여주고
npm install react-router-dom@6
import { BrowserRouter } from 'react-router-dom';
<BrowserRouter>
<App/>
</BrowserRouter>
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<BrowserRouter>
<App />
</BrowserRouter>
</React.StrictMode>
);
import { Routes, Route, Link } from 'react-router-dom';
<Routes>
<Route />
</Routes>
<Routes>
<Route path="/" /> #http://localhost:3000/
<Route path="/detail" /> #http://localhost:3000/detail
<Route path="/about" /> #http://localhost:3000/about
</Routes>
(1) 내용을 element 에 직접 작성
<Routes>
<Route path="/" element={<div>메인페이지임</div>} />
<Route path="/detail" element={<div>상세페이지임</div>} />
<Route path="/about" element={<div>어바웃페이지임</div>} />
</Routes>
(2) Component를 element 에 작성
<Routes>
<Route path="/detail" element={<Detail/>}/>
<Route path="/about" element={<About/>}/>
</Routes>
→ 그러면 <></> 안에 메인페이지에 보여주고 싶은 내용을 담자!
→ <></>에 넣는 이유는 하나의
<Route path="/" element={
<>
<div className="main-bg"></div>
<div className="container">
<div className="row">
{
shoes.map((a,i)=>{
return (
<Card shoes={shoes[i]} i={i}></Card>
)
})
}
</div>
</div>
</>
} />
→ 그래서 페이지도 컴포넌트로 만들면 좋음!!
→ 일반 유저들은 path를 모르므로 페이지 이동버튼을 만들자
//App.js
import './App.css';
import {Button, Navbar, Container, Nav} from 'react-bootstrap';
import data from './data';
import { useState } from 'react';
import {Routes, Route, Link} from 'react-router-dom';
import Detail from './Detail.js';
function App() {
let [shoes] = useState(data);
return (
<div className="App">
<Navbar bg="light" variant="light">
<Container>
<Navbar.Brand href="#home">ShoeShop</Navbar.Brand>
<Nav className="me-auto">
<Nav.Link href="#home">Home</Nav.Link>
<Nav.Link href="#cart">Cart</Nav.Link>
</Nav>
</Container>
</Navbar>
<Routes>
<Route path="/" element={
<>
<div className="main-bg"></div>
<div className="container">
<div className="row">
{
shoes.map((a,i)=>{
return (
<Card shoes={shoes[i]} i={i}></Card>
)
})
}
</div>
</div>
</>
}/>
<Route path="/detail" element={<Detail/>}/>
</Routes>
</div>
);
}
function Card(props) {
return (
<div className="col-md-4">
<img src={'https://codingapple1.github.io/shop/shoes' + (props.i+1) +'.jpg'} width="80%"/>
<h4>{props.shoes.title}</h4>
<p>{props.shoes.price}</p>
</div>
)
}
export default App;
//Detail.js
function Detail(){
return (
<div>
<div className="container">
<div className="row">
<div className="col-md-6">
<img src="https://codingapple1.github.io/shop/shoes1.jpg" width="100%" />
</div>
<div className="col-md-6">
<h4 className="pt-5">상품명</h4>
<p>상품설명</p>
<p>120000원</p>
<button className="btn btn-danger">주문하기</button>
</div>
</div>
</div>
</div>
)
}
export default Detail