728x90
React-router-dom
오늘은 리액트 라우터 돔에 대해서 공부를 했다.
현재 버전은 v6까지 나왔으며, v5와 비교했을 때 바뀐 점이 꽤나 있다.
코딩애플 강의에서는 v5를 사용하고 있어서 혼란이 있었다.
index.js
import 어쩌구 많은곳;
import { BrowserRouter } from 'react-router-dom';
ReactDOM.render(
<React.StrictMode>
<BrowserRouter>
<App/>
</BrowserRouter>
</React.StrictMode>
document.getElementById('root')
);
app.js
import 많은 곳;
import { Link, Route, Switch } from 'react-router-dom';
function App(){
return (
<div>
HTML 잔뜩있는 곳
<Route path="/">
<div>메인페이지 코드</div>
</Route>
<Route path="/detail">
<div>상세페이지 코드</div>
</Route>
</div>
)
}
이 코드는 코딩애플에서 쓴 react-router-dom인데 v5이다. 나한테 install된 버전은 v6여서 그런지
이런식으로 코드를 짜면 빈 화면만 송출이 되었다. 그래서 v6버전에 맞춰 코드를 수정해보았지만
다른 확장프로그램들이랑 버전이 꼬였는지(?) 똑같이 빈 화면이 송출이 되어서
아예 react-router-dom을 v5로 다시 설치하였다. 그리고 다시 위의 코드로 실행을 해보니 다행히도
화면이 송출되었다.
위의 코드를 조금 더 간편화하기 위해 상세페이지에 있는 코드를 컴포넌트화 시켜 외부에서 불러오도록
설정해보았다.
detail.js
import React, {useState} from 'react';
function Detail(){
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">상품명</h4>
<p>상품설명</p>
<p>120000원</p>
<button className="btn btn-danger">주문하기</button>
</div>
</div>
</div>
)
}
export default Detail
detail.js라는 파일을 새로 만드어 거기에 세부사항 코드를 넣었다.
그리고 export default를 이용하여 외부에서 import할 수 있게 해주었다.
<Route path="/detail">
<Detail />
</Route>
위의 코드 하나로 코드가 굉장히 줄어들었다.
앞으로 프로젝트를 하면서는 아마도 v6를 써야할 것 같아서
조만간 v6의 사용법을 제대로 이해해야겠다.
728x90
'JS > React' 카테고리의 다른 글
[NextJS] Cypress 테스트 코드 작성 해보기 (1) | 2024.03.04 |
---|---|
[NextJS] CSR, SSR 그리고 SSG의 차이 (0) | 2024.02.27 |
[리액트] 공부 일지-2 (0) | 2022.01.06 |
[리액트] 공부 일지-1 (0) | 2021.12.31 |
[리액트] styled-component 사용법 (0) | 2021.12.29 |
댓글