react hook useParams, useSearchParams

Posted by : on

Category : react


Pasted image 20240507193110.png

동적 경로란 페이지가 렌더링 될 때, 동적으로 바뀌고있는 url을 말한다. 이것도 두가징 방법이 있다.

1. URL Parameter

위 이미지 같이 /뒤에 아이템의 id를 명시하는 것이다. 이때는

import './App.css';
import { Route,Routes,Link } from 'react-router-dom';
import Home from './pages/Home';
import New from './pages/New';
import Diary from './pages/Diary';
import NotFound from './pages/NotFound';


function App() {
 return (
  <>
   <div>
    <Link to={"/"}>Home</Link>
    <Link to={"/new"}>New</Link>
    <Link to={"/diary"}>Diary</Link>
   </div>
   <Routes>
    <Route path="/" element={<Home />} />
    <Route path="/new" element={<New />} />
    //이렇게 reactRoute에 path에다가 /:이동할값이름 을 설정해 준 뒤
    <Route path="/diary/:id" element={<Diary />} />
    <Route path="*" element={<NotFound />} />
   </Routes>
  </>
 )
}

export default App

// useParams를 import해준 다음
import { useParams } from "react-router-dom";

//useParams 객체를 변수에 담아 준 뒤, params.받을값이름으로 사용해 준다.
const Diary = () => {
  const params = useParams();
  return(
    <div>{params.id}번 페이지 입니다.</div>
  )
};

export default Diary;

Query string

쿼리 스트링을 사용 할 때는 우리가 흔히 아는 get방식이다. url뒤에 /?변수명=값 의 식으로 전달하게 되는데 이거는 route에 뭔가를 해 줄 필요도 없다.

//useSearchParams를 호출한 다음
import { useSearchParams } from "react-router-dom";

const Home = () => {
//아래처럼 배열에 넣어준뒤 그냥 params.get(변수명)
//을 해주면 된다.
  const [params,setParams] = useSearchParams();
  console.log(params.get("value"))
  return(
    <div>Home</div>
  )
};

export default Home;

About 유재석
유재석

개발자 유재석 입니다. Web Developer.

Email : jaeseok9405@gmail.com

Website : https://github.com/yoo94