ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Project] 리액트 게시판 구현 #2 (react router 리액트 라우터, Link 사용)
    Project/게시판 2022. 9. 23. 19:24

    글을 작성하기 전에, 저는 html, css만 조금 만져 보고, 전체적으로 만져본 경험이 없습니다.

    공부해보기 위해 게시판을 혼자 구현해 봐야겠다는 생각을 했고,
    그 발자취를 블로그에 남기려 합니다.

    코드를 잘 짜지 못해, 코드가 다소 난잡하고 쓸데없는 코드들이 들어 있을 수 있습니다!


    우리가 흔히 말하는 페이지 이동 기능을 구현하는 방법은, 리액트 라우터(react router)를 통해 가능합니다.

     

    라우팅이 무엇인지, 지금부터 알아보겠습니다.

     


    [ 라우팅이란? ]

     

    라우팅이란, 사용자가 요청한 URL에 따라 해당 URL에 맞는 페이지를

    보여주는 것이라고 할 수 있습니다.

     

    리액트에서는 이 라우팅을, 리액트 라우터(react router)를 통해 가능하게 합니다.

     


    [ 리액트 라우터 ( React Router ) ]

     

    사용자가 입력한 주소를 감지하는 역할을 하며,

    여러 환경에서 동작할 수 있도록 여러 라우터 컴포넌트를 제공합니다.

     

    이 중 가장 많이 사용하는 라우터 컴포넌트는 BrowserRouterHashRouter입니다.

     

    제가 사용하려고 하는 라우터 컴포넌트는 BrowserRouter를 사용하고자 합니다.

     

    • BrowserRouter - HTML5를 지원하는 브라우저의 주소를 감지합니다.
    • HashRouter - 해시 주소(http://mpd253.tistory.com/#test)를 감지합니다.

     


    [ 설치 전 파일 정리하기 ]

     

     

    이전 글에서 리액트를 설치했을 때, 만들어진 파일들입니다.

     

    저는 이 파일들 중에서,

    App.test.js, logo.svg, reportWebVitals.js, setupTest.js, App.css

     

    총 4개의 파일은 사용하지 않을 예정이기 때문에 지워주도록 하겠습니다.

     

    이렇게 된다면, 저 5개를 사용하는 파일들에선 "당연히" 오류가 발생하게 됩니다.

     

     

    [ App.js ] 

     

    해당 빨간선으로 그어진 라인은 모두 지워줍니다.

     

     

    [ index.js ] 

     

    해당 빨간선으로 그어진 라인은 모두 지워줍니다.

     

    또한, src 폴더 안에 component 폴더와, pages 폴더를 만들어 줍니다.

     

    component 폴더계속해서 재사용 할 만한 요소들을 저 폴더 안에 넣어줄 것이고

    pages 폴더는 게시판 페이지의 각각의 페이지들을 담아줄 폴더입니다.

     

     

    이렇게 설정하면 저의 초기 작업 환경과 동일하게 됩니다.


    [ 리액트 라우터 설치하기 ]

     

    방법 1 : npm

    방법 2 : yarn

     

    저는 npm을 사용하여 설치하였습니다.

     


    [ 리액트 라우터 사용해보기 ]

     

    저는 페이지를 크게 5가지로 먼저 나누어 보려고 합니다.

     

    1. Login.js - 로그인 페이지

    2. Main.js - 메인 페이지

    3. PostView.js - 상세 게시글을 볼 수 있는 페이지

    4. SignUp.js - 회원가입 페이지

    5. Write.js - 게시글 작성 페이지

     


    먼저, 항상 페이지에 있어야 하는 페이지의 제목component 폴더 안에 만들어 줍시다.

     

     

    [ MainNavigation.js ] 

     

     

    그 다음은, 아래와 같이 pages 폴더 안에 js 파일을 생성해 줍니다.

     

     

    [ Login.js ] 

     

     

    [ Main.js ] 

     

     

    [ PostView.js ] 

     

     

    [ SignUp.js ] 

     

     

    [ Write.js ] 

     

     


    1. <BrowserRouter> 태그로 컴포넌트 사용하기

    <Routes> 컴포넌트 위에는 항상 고정되는 위치에 있어야 할 컴포넌트를 추가해 줍니다.

    2. <Routes>, <Route> 컴포넌트 사용하기

    - <Routes> 컴포넌트 여러 Route를 감싸서 규칙이 일치하는 라우트를 렌더링 하는 역할을 해 줍니다.

    - <Route> 컴포넌트 path 속성에 경로, element 속성에는 컴포넌트를 넣어 줍니다.

     

    2.1. "/"로 접근 시 메인 페이지(Main.js)가 보여집니다.

    2.2 "/product/게시글번호" 로 접근 시 상세 게시글(PostView.js)을 볼 수 있습니다.

     

    [ App.js ] 

     

     

    해당 빨간선으로 그어진 부분을 모두 작성합니다.

     

    그 이후, 먼저 페이지가 보여지는 Main.js로 이동합니다

     

    여기서 이제, <Link> 컴포넌트를 이용해 페이지를 이동시킬겁니다.

     

    3. <Link> 컴포넌트로 페이지 이동하기

    - <Link><a> 태그처럼 링크를 연결시켜 주지만, URL 개념과는 다른 path 개념이다.

     

    아래와 같이 사용할 수 있다.

    <Link to='/login'>로그인 페이지</Link>

     

    [ Main.js ] 

     

     

    아까 App.js 파일에서 설정한 경로와 같은 경로로, 이동할 수 있는 링크를 연결해 줍니다.

     

    [ MainNavigation.js ]

     

    MainNavigation.js 파일도 마찬가지로, 누르면 메인페이지로 이동할 수 있도록 링크를 연결합니다.

     


    - 결과

     

    아래와 같은 결과물이 나오게 됩니다.

     

    해당 링크를 누르면, 내가 이동하고자 하는 경로(URL)로 이동 가능합니다.

     

     

     


    마지막으로 실행 영상입니다.

     

     


    이미지 출처 : https://images.velog.io/images/jini_eun/post/107f5cfb-e97c-4c4c-b997-06098062e5b3/image.png
    참고 블로그 : https://goddaehee.tistory.com/305

     

    'Project > 게시판' 카테고리의 다른 글

    [Project] 리액트 게시판 구현 #1 (툴 소개)  (2) 2022.09.22
Designed by Tistory.