Today I Learned
queryString 으로 상세페이지 이동하기
rinny01
2025. 2. 5. 17:44
반응형
Query String?
쿼리스트링(Query String)은 URL의 일부로, 웹 페이지에 전달되는 추가적인 데이터를 담는 방법이다.
URL 뒤에 ?로 시작하여 key=value 형태의 파라미터를 추가하는 방식
http://example.com/page?key1=value1&key2=value2
- 여기서 ?는 쿼리스트링의 시작을 나타낸다
- key1=value1 : 키-벨류 한쌍
- & : 여러개의 키-벨류 쌍을 구분하는 구분자
그러면 해야할일
- 라우터에 디테일 페이지를 추가해준다.
- 리스트에서 아이템 목록을 하나 클릭한다 > 디테일 페이지로 이동한다.
- 클릭할때 쿼리스트링을 넘겨주어서 디테일페이지에서 쿼리스트링을 읽어서 선택한 아이템의 상세페이지를 출력한다
카드 아이템.jsx 에서 해줘야할일
- 각 아이템 클릭시 해당 아이템의 id를 쿼리스트링으로 넘긴다.
- 그리고 페이지를 디테일페이지로 이동한다.
onClick={() => handleGotoDetail(list.id)}
- handleGotoDetail 함수를 호출하면서 list의 id를 넘겨준다.
useNavigate();
- 리액트 라우터 훅으로, navigate 함수를 반환한다. 이함수를 호출하면 원하는 url로 이동한다.
navigate(`/detail?id=${id}`);
- 쿼리스트링 ?을 포함하여 디테일 페이지로 이동한다.
그러면 진짜 url을 확인해보자.
id값 4를 가지고있는 아이템을 클릭 한 후 url을 보면 navigate(`/detail?id=${id}`); /detail?id=4 로 알맞게 이동한걸 볼수있다.
디테일 페이지에서는 해당id를 가진 정보를 불러와주기만 하면 된다!
디테일 페이지에서 해주어야 할 일
- 쿼리스트링 값 읽기
- 쿼리스트링 값에 맞는 데이터 ui에 노출하기.
const [searchParams] = useSearchParams();
const getQueryId = searchParams.get("id");
우선 아까 보내준 쿼리스트링을 읽어와야한다.
useSearchParams()는 쿼리스트링 값을 읽고 수정할수 있는 훅이다.
훅을 통해 쿼리파라미터를 가져온후, 그 파라미터의 키가 id인 값을 가져온다.
그런다음, 데이터에서 파라미터의 키가 id인 값과 동일한 id를 가진 몬스터의 정보를 ui에 뿌려주면 된다.
반응형
LIST