ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90

*์„ค์น˜ : 

npm install react-router-dom@6

 

*์„ธํŒ… : index.js

import { BrowserRouter } from "react-router-dom";

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <React.StrictMode>
      <BrowserRouter>
        <App />
      </BrowserRouter>
  </React.StrictMode>
);

 

ํŽ˜์ด์ง€ ๋‚˜๋ˆ„๊ธฐ 

(App.js)

import { Routes, Route, Link, useNavigate, Outlet } from 'react-router-dom' //import

function App(){
  return (
    (์ƒ๋žต)
    <Routes> // Routes ์•ˆ์— Route๋ฅผ ์ž‘์„ฑ ํ›„ ๊ฒฝ๋กœ, ๋ณด์—ฌ์ค„ html ๋„ฃ์–ด์ค€๋‹ค. 
      <Route path="/detail" element={ <div>์ƒ์„ธํŽ˜์ด์ง€์ž„</div> } /> 
      <Route path="/about" element={ <div>์–ด๋ฐ”์›ƒํŽ˜์ด์ง€์ž„</div> } />
    </Routes>
  )
}

 

ํŽ˜์ด์ง€ ์ด๋™ ๋ฒ„ํŠผ (LINK)

(์ž˜ ์•ˆ์”€)
<Link to="/">ํ™ˆ</Link>
<Link to="/detail">์ƒ์„ธํŽ˜์ด์ง€</Link>

 

(์ด๊ฑฐ ์”€)
function App(){
  let navigate = useNavigate()
  
  return (
    (์ƒ๋žต)
    <button onClick={()=>{ navigate('/detail') }}>์ด๋™๋ฒ„ํŠผ</button>
  )
}

*๋ฒˆ์™ธ : ์ด์ƒํ•œ ๊ฒฝ๋กœ๋กœ ์ ‘์†ํ–ˆ์„ ๋•Œ ์—†๋Š” ํŽ˜์ด์ง€ ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ์œผ๋ฉด,

 <Route path="*" element={ <div>์—†๋Š”ํŽ˜์ด์ง€์ž„</div> } />

 

์„œ๋ธŒ๊ฒฝ๋กœ 

//Route ์•ˆ์— Route ๋„ฃ๋Š”๊ฑธ Nested routes๋ผ๊ณ  ๋ถ€๋ฆ„
<Route path="/about" element={ <About/> } >  
  <Route path="member" element={ <div>๋ฉค๋ฒ„๋“ค</div> } />
  <Route path="location" element={ <div>ํšŒ์‚ฌ์œ„์น˜</div> } />
</Route>

//About ์ปดํฌ๋„ŒํŠธ ์•ˆ์— div๋ฅผ ์–ด๋””๋‹ค ๋ณด์—ฌ์ค„์ง€ ํ‘œ๊ธฐ ํ•ด์•ผ๋จ 
function About(){
  return (
    <div>
      <h4>aboutํŽ˜์ด์ง€์ž„</h4>
      <Outlet></Outlet> 
    </div>
  )
}

 

 

URL ์—ฌ๋Ÿฌ๊ฐœ ๋งŒ๋“ค๊ธฐ (ํŒŒ๋ผ๋ฏธํ„ฐ ๋ฌธ๋ฒ•)

<Route path="/detail/:id" element={ <Detail shoes={shoes}/> }/>

 

useParmas

//์œ ์ € URLํŒŒ๋ผ๋ฏธํ„ฐ์— ์ž…๋ ฅํ•œ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•œ ํ›…
import { useParams } from 'react-router-dom' //import 

function Detail(props){

  let { id } = useParams();
  let ์ฐพ์€์ƒํ’ˆ = props.shoes.find(function(x){
    return x.id == id
  });

  return (
    <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 mt-4">
          <h4 className="pt-5">{์ฐพ์€์ƒํ’ˆ.title}</h4>
          <p>{์ฐพ์€์ƒํ’ˆ.content}</p>
          <p>{์ฐพ์€์ƒํ’ˆ.price}์›</p>
          <button className="btn btn-danger">์ฃผ๋ฌธํ•˜๊ธฐ</button> 
        </div>
      </div>
  </div>

 

728x90
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
ยซ   2025/08   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
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
๊ธ€ ๋ณด๊ด€ํ•จ