ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TIL-2024.05.02 - React - 008. Router (react-router-dom)
    > Frontend/React 2024. 5. 2. 15:18

     

     

     

    질문

    1. React 에서 페이지 이동 하는 방식이 궁금해

     

    Router (react-router-dom@v6)

    - react-router-dom을 통해 Router 기능을 활용가능

    - react-router-dom은 버젼 6까지 나왔음으로, 공식 문서에서 해당 기능 파악 필요. 

     

    기본 예제

    import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
    
    function App() {
      return (
        <Router>
          <Routes>
            <Route path="/" element={<Home />} />
            <Route path="/about" element={<About />} />
            <Route path="/users" element={<Users />}>
              <Route path=":userId" element={<UserDetails />} />
            </Route>
          </Routes>
        </Router>
      );
    }

     

     

     

    Parameter 사용

    - 라우트 경로에 파라미터를 전달하여 동적인 페이지를 렌더링

     

     

    예제

     

    ... 생략 ...
    	{/* Route Parameter > useParams Hook 을 사용해서 가져와야함. */}
    	<Route path="profile/:username" element={<Profile/>}></Route>                
    ... 생략

     

    import React from "react";
    import NonUser from "./NonUser";
    import {useParams} from "react-router-dom";
    
    
    const data = {
        heath: {
            name: 'Heath Jann',
            description: 'React 초보'
        },
        gildong: {
            name: 'Gildong Hong',
            description: '홍길동'
        },
    };
    // react-router에서 useParams Hook을 통해서 parameter 가져옴
    const Profile = (props) => {
        let { username } = useParams();
        const profile = data[username];
        if (!profile) {
            return <NonUser/>;
        }
        return (
            <div>
                <h3>{username}({profile?.name})</h3>
                <p>{profile?.description}</p>
            </div>
        );
    };
    
    
    export default Profile;

     

     

     

    Query 사용 

    - React Router v6에서는 useSearchParams 훅을 사용하여 쿼리 파라미터를 처리

     

     

    예제

     

    ...생략...
    	{/* Route URL 쿼리 > useSearchParams Hooks 을 사용해서 가져옴*/}
    	<Route path="info" element={<Info/>}></Route>
    ...생략...

     

     

    import React from "react";
    import { useSearchParams } from 'react-router-dom';
    
    const Info = () => {
        // 직접적으로 location 프로퍼티에 접근하는 대신에, useSearchParams 훅을 사용하여 쿼리 파라미터에 접근해야함 (@react-router v6)
        const [searchParams] = useSearchParams();
        const query = searchParams.get('detail');
    
        return (
            <div>
                <h1>Info</h1>
                <p>Info of: {query}</p>
            </div>
        );
    };
    
    export default Info;

     

     

    서브라우팅 

     

    - 라우트 경로에 다른 라우트 사용 

     

    예제

     

    {/* 서브라우터 사용 */}
    <Route path="about" >
    	<Route index element={<About/>}></Route>
    	<Route path="about-us" element={<AboutUs/>}></Route>
    </Route>

     

     

     

    네비게이팅 

    - 프로그래밍 방식으로 라우팅을 수행하는 데 사용

     

    예제

    import React from "react";
    import {useHistory, useNavigate} from 'react-router-dom'; // 설치한 패키지
    
    
    const HistorySample = () => {
        const navigate = useNavigate();
    
        const goHome = () => {
            navigate('/');
        };
    
        const goBack = () => {
            navigate(-1); // Navigates back in history
        };
    
        const goForward = () => {
            navigate(1); // Navigates forward in history
        };
    
        const goToAboutPage = () => {
            navigate('/about');
        };
    
        return (
            <div>
                <h1>History Page</h1>
                <button onClick={goHome}>Go Home</button>
                <button onClick={goBack}>Go Back</button>
                <button onClick={goForward}>Go Forward</button>
                <button onClick={goToAboutPage}>Go to About Page</button>
            </div>
        );
    
    }
    
    
    export default HistorySample;

     

     

     

     

    추가 확인해야되는 내용

    https://reactrouter.com/en/6.23.0/start/tutorial

     

    Tutorial v6.23.0 | React Router

     

    reactrouter.com

     

     

     

     

    답변

     

    1. React 에서 페이지 이동 하는 방식이 궁금해

    - Router (react-router-dom)을 통해 페이지 이동

    - v6가 되면서 변화가 되어서, 공식 문서 확인 필요

     

     

     

     

    댓글

Designed by Tistory.