Zoeeey
Stack flows in you
Zoeeey
  • 분류 전체보기 (155)
    • 💡 UXUI (4)
      • UXUI (2)
      • UI (2)
      • UX (0)
    • 🟨 JavaScript (66)
      • 개념 (42)
      • 정리 (2)
      • 문제풀기 (프로그래머스, 코딩애플) (15)
      • 응용하여 자동화or문제해결하기 (2)
      • 기타 (5)
    • ⚛️ React (49)
      • 개념 (27)
      • 개념(Redux) (3)
      • 정리 (4)
      • 문제풀기 (코딩애플: React) (15)
    • 📘 TypeScript (10)
      • 개념 (8)
      • 문제풀기 (코딩애플) (2)
    • 🌐 HTML,CSS (18)
      • 실무에서 자주 발생한 오류들 (10)
      • 뒤늦게 알아서 뼈아픈 유용한 CSS (6)
      • 기타 자주 쓰는 CSS (2)
    • 💻 CS (8)
      • CS (5)
      • 정규표현식 (2)
      • Git,Github (1)

태그

  • 코딩애플
  • 프로그래머스
  • state
  • 삼항연산자
  • CSS
  • array
  • axios
  • JavaScript
  • json
  • redux
  • TypeScript
  • 오류
  • object
  • Props
  • CS
  • Ajax
  • class
  • UXUI
  • useEffect
  • react
전체 방문자
오늘
어제
hELLO · Designed By 정상우.
Zoeeey

Stack flows in you

⚛️ React/개념

React : 리액트 라우터 (설치, 세팅, 이동버튼) 및 외부라이브러리 사용법

2023. 5. 18. 13:17

리액트에서 페이지 나누는 법

리액트를 쓰지 않으면 페이지를 나누고 싶을 때 html을 여러개 만들지만, 리액트는 html 파일을 하나만 사용해도 된다.

  1. 컴포넌트를 만들어서 상세페이지 내용을 채운다
  2. /페이지로 접속하면 해당 컴포넌트를 보여준다

react-router-dom이라는 라이브러리를 쓰면 위 작업을 쉽게 할 수 있다.


설치

터미널에 아래 코드를 입력한다. (뒤 6은 버전명이다.)

npm install react-router-dom@6

 

그리고 index.js에 import를 삽입하고, <App /> 태그를 감싸는 <BrowserRouter>코드를 입력한다.

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

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

* import에 ./부터 경로를 작성한 것들은 내가 만든 파일, 위 react-router-dom처럼 경로가 없는 것들은 대부분 라이브러리다.


사용법 (외부라이브러리 사용법)

App.js에 아래 코드를 import한다. ({}안에 사용할 컴포넌트들을 작성한다.)

import { Routes, Route, Link } from 'react-router-dom';

return 내에 사용할 때는 아래처럼 사용한다.

function App() {
  let [shoes] = useState(data);
  
  return (
    <div className="App">
      <Routes>
        <Route path="/" element={<div>메인페이지 내용</div>} />
        <Route path="/cart" element={<div>상세페이지 내용1</div>} />
        <Route path="/detail" element={<div>상세페이지 내용2</div>} />
      </Routes>
    </div>
  );
}
  • Route는 각각의 페이지들이다.
  • path는 해당 페이지의 경로이다.
    (path에 /만 넣는다면 메인페이지가 된다.)
  • element는 해당 페이지 안에 들어갈 컨텐츠이다.

사용예시

Router 안의 element는 하나의 div 태그로 묶어줘야 하므로, fragment 문법으로 묶어주었다.

<Routes>
    <Route path="/" element={
      <>
      <div className="main-bg" style={{backgroundImage : 'url('+ mainBg +')'}}></div>
      <div className="container">
        <div className="row">
          {
            shoes.map(function(a, i){
              return (
                <Product shoes={shoes} i={i}/>
              )
            })
          }
        </div>
      </div>
      </>
    } />
    <Route path="/cart" element={<div>상세페이지 내용1</div>} />
    <Route path="/detail" element={<div>상세페이지 내용2</div>} />
</Routes>

페이지 이동 버튼

<Link to="/">홈</Link>
<Link to="/cart">장바구니</Link>
<Link to="/detail">상세보기</Link>

출처 : 코딩애플 https://codingapple.com/

저작자표시 비영리 동일조건 (새창열림)

'⚛️ React > 개념' 카테고리의 다른 글

React : URL 파라미터 (useParams)  (0) 2023.05.22
React : 리액트 라우터 (navigate, 404페이지, nested routes, outlet)  (0) 2023.05.19
React : 다른 파일의 데이터 바인딩하기 (import, export)  (0) 2023.05.17
React : 프로젝트생성/bootstrap 연결/이미지경로 연결/public폴더  (0) 2023.05.17
React : 옛날 class문법  (0) 2023.05.15
    '⚛️ React/개념' 카테고리의 다른 글
    • React : URL 파라미터 (useParams)
    • React : 리액트 라우터 (navigate, 404페이지, nested routes, outlet)
    • React : 다른 파일의 데이터 바인딩하기 (import, export)
    • React : 프로젝트생성/bootstrap 연결/이미지경로 연결/public폴더
    Zoeeey
    Zoeeey
    길게 생각하고 짧게 그리기

    티스토리툴바