| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- classList remove
- windowwidth
- 냥빨이다가온다
- 클래스 토글
- 커스텀훅
- react
- chart.js
- 방심은금물
- classList toggle
- nuxt.js
- 간식금지다!
- ROUTER 버전6
- 대표님물리기없기
- 배열중복제거
- 포트폴리오
- classList add
- 퍼블리싱
- 접근성
- nuxt layout
- 내배위의고양이
- react-router
- vue3 setup
- 안짤렸다
- 언젠간가겠지
- classList
- new set()
- react-router-dom
- 2020
- 리엑트할수있는퍼블리셔라규
- chart responsive
Archives
- Today
- Total
틈
[REACT] router 본문
1. Getting Started(ㅋㅋㅋ)
router를 설치합니다.
yarn add react-router-dom
index.js에서 셋팅해 줍니다.
import App from "./App";
import reportWebVitals from "./reportWebVitals";
import { BrowserRouter } from "react-router-dom";
ReactDOM.render(
<React.StrictMode>
<BrowserRouter>
<App />
</BrowserRouter>
</React.StrictMode>,
document.getElementById("root")
);
import { BrowserRouter } from “react-router-dom”;
을 추가하고
<BrowserRouter>
<App />
</BrowserRouter>
App을 BrowserRouter로 감싸줍니다.
BrowserRouter를 HashRouter로 변경해서 작업해도 됩니다.
(주소에 /#/가 추가됩니다.
사용하는 이유 : 서버에 직접적으로 접속하지 못하게 하기 위함)
2. App.js에서 사용하기
import { Link, Route, Routes } from "react-router-dom";
import Detail from "./components/Detail";
function App() {
return (
<Routes>
<Route path="/" element={<div>메인페이지예요</div>}></Route>
<Route path="/detail" element={<Detail />}></Route>
<Route path="/:id" element={<div></div>}></Route>
</Routes>
);
}
- Detail component
import React from 'react';
import { useNavigate } from 'react-router-dom';
const Detail = () => {
let navigate = useNavigate();
return (
<div className="container">
<div className="row">
<div className="con-md-6">
<img src="https://codingapple1.github.io/shop/shoes1.jpg" width="100%" alt="신발 이미지" />
</div>
<div className="col-md-6 mt-4">
<h4 className="pt5">상품명</h4>
<p>상품 설명</p>
<p>120000원</p>
<button type="button" className="btn btn-danger">주문하기</button>
<button type="button" className="btn btn-danger" onClick={() => navigate(-1)}>뒤로가기</button>
</div>
</div>
</div>
)
};
export default Detail;
https://velog.io/@soryeongk/ReactRouterDomV6
[React] react-router-dom v6 업그레이드 되면서 달라진 것들
react-router-dom이 v6으로 업그레이드 되었습니다 :) v5와 다른 점이 몇 가지 있으니 꼭 숙지하시기 바랍니다. 안그럼 아무것도 실행되지 않을지도....
velog.io
react router가 버전이 올라가면서(ver.6)
기존에 사용하던 Switch, useHistory를 사용하지 못하게 되었습니다.
Switch는 Routes로,
useHistory는 useNavigate로 사용법이 변경되었는데,
에러로 잡아내기에는 어려운 부분이어서 3~4시간 정도 검색했던 듯 합니다.
다행히 벨로그 글을 보고 수정할 수 있게 되었습니다.
개발자 커뮤니티는 너무 따뜻한거 같아요 :)
3. useParams() 사용하기
- App.js(App() > return > Routes)
<Route path="/detail/:paramId" element={<Detail shoes={shoes} />}></Route>
Route path에서 /:id 를 설정하고
- Detail component
import React from 'react';
import { useNavigate, useParams } from 'react-router-dom';
const Detail = ({shoes}) => {
let navigate = useNavigate();
let { paramId } = useParams();
let elem = shoes.filter(x=>x.id === parseInt(paramId))[0];
const { id,title,content,price } = elem;
return (
<div className="container">
<div className="row">
<div className="con-md-6">
<img src={`https://codingapple1.github.io/shop/shoes${ id+1 }.jpg`} width="100%" alt="신발 이미지" />
</div>
<div className="col-md-6 mt-4">
<h4 className="pt5">{ title }</h4>
<p>{ content }</p>
<p>{ price }원</p>
<button type="button" className="btn btn-danger">주문하기</button>
<button type="button" className="btn btn-danger" onClick={() => navigate(-1)}>뒤로가기</button>
</div>
</div>
</div>
)
};
export default Detail;
useParams()를 사용해 주소에서 id값을 받아와 해당 디테일을 노출해 줍니다.
'code > React.js' 카테고리의 다른 글
| [REACT] 실시간 화면 너비 구하기(with useEffect) (0) | 2022.03.18 |
|---|---|
| [React] 브라우저 대응(with.javascript) (0) | 2022.03.07 |
| 'react-app' 있을 때, eslint 설정 적용하기 (0) | 2022.01.13 |
| [styled component] 변수 지정하기 (0) | 2022.01.13 |
| [styled component] 기본 내장 함수(?) (0) | 2022.01.11 |
Comments