• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 React 게시판 선생님 리액트 질문 있습니다.

선생님 리액트 질문 있습니다.

5 글 보임 - 1 에서 5 까지 (총 5 중에서)
  • 글쓴이
  • #22056

    이상원
    참가자

    그 라우터 방식중에 PrivateRoute, PublicRoute 방식중 질문이 있는데요.

    App.js

    return (
        <div className="App">
            <Switch>
                <Route>
                  <PrivateRoute  path='/'>
                    <Navbar
                      username={user.username}
                      onLogout={onLogout}
                      onAllSns={onAllSns}
                      onMySns={onMySns}
                    />
                  </PrivateRoute>
                  <PrivateRoute exact path='/:username'>
                    <MySns snsService={snsService} />
                  </PrivateRoute>
                  <PrivateRoute exact path='/board'>
                    <Board boardService={boardService} />
                  </PrivateRoute>
                  <PrivateRoute exact path='/editorBoard'>
                    <EditorBoard boardService={boardService} user={user} />
                  </PrivateRoute>
                  <PrivateRoute exact path='/:id'>
                    <DetailBoard boardService={boardService}/>
                  </PrivateRoute>
                  <PublicRoute Restircted={true} exact path='/' component={Login}>
                    <AllSns snsService={snsService} />
                  </PublicRoute>
                </Route>
            </Switch>
        </div>  
      );
    }

    privateRoute.jsx

    import React from "react";
    import { Redirect, Route } from "react-router-dom";

    function PrivateRoute({ component, ...rest }) {
      const TOKEN = process.env.REACT_APP_BASE_URL;
      return (
        <Route
          {...rest} render={props =>
            localStorage.setItem(TOKEN) ? (
              <component {...props} />
            ) : (
              <Redirect to = "/login" />
            )
          }
        />
      );
    }

    export default PrivateRoute;

    publicRoute.jsx

    import React from 'react'
    import { Redirect, Route } from "react-router-dom";

    function PublicRoute({ component, restricted, ...rest }) {
      const TOKEN = process.env.REACT_APP_BASE_URL;
      return (
        <Route
          {...rest} render={props =>
            localStorage.setItem(TOKEN) && restricted ? (
              <Redirect to="/main" />
            ) : (  
              <component {...props} />
            )
          }
        />
      );
    }

    export default PublicRoute

    이게 코드인데요 제가 로그인폼을 만들어서 로그인전에는 로그인폼 외에는 안보이게 하고싶어서

    구글에 참조 하면서 만들어봤는데요.

    이렇게 만드니깐 예를들어 Board.jsx 파일에 써져있는 리스트글들이 안사라지고 Detail.jsx에도 옮겨져 와지는 오류가 있습니다.

    글들이 안사라지고 계속 따라다녀요 .. 분명 저거 문제인거 같은데 해결을 못하고있습니다.

    도와주세요 ㅠㅠ

    #22062

    codingapple
    키 마스터

    1 <PrivateRoute exact path='/board'>
    2 <PrivateRoute exact path='/:id'>

    이 경우에 url란에 /board라고 입력하면 1도 만족하고 2도 만족해서 둘다 뜨는듯합니다 <Switch>를 쓰거나 그래봅시다

    #22065

    이상원
    참가자

    방금 실험해 보았는데 exact path= "/:id" 같이 앞에 : 가 달린 부분이 문제인거 같습니다.. 어덯게 해결하면 좋을까요

    #22088

    codingapple
    키 마스터

    /:id 이런걸 

    /어쩌구/:id 이런 경로로 바꾸면 안될까요 

    #22139

    이상원
    참가자

    감사합니다 선생님 그런식으로 해서 해결했어요~

5 글 보임 - 1 에서 5 까지 (총 5 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관, 개인정보처리방침
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠