개발자

next.js router 이동할때 보여지는 url 변경

2022년 10월 11일조회 1,521

router.push를 사용하여 라우팅을 변경해주고 있는데 url을 통해 페이지에 쿼리를 전달해야합니다. 지금은 /books/create?bookId=106?username="john"?keywordId=200 이런식으로 보내주고 있습니다. url이 너무 길어지고 있어서 데이터는 그대로 전달받고 url을 간결하게 변경하고 싶은데 방법이 있을까요?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 2

성원님의 프로필 사진

router.push 함수의 두 번째 파라미터인 as를 사용하면 될 것 같아요. next/router 공식문서(https://nextjs.org/docs/api-reference/next/router)를 보면 as 파라미터는 브라우저에서 실제로 보이는 path를 위한 Optional decorator라고 설명 되어있습니다. 사용법은 router.push의 첫 번째 인자에는 full path를 적고, 두 번째 인자로 브라우저에 표시할 path를 작성하면 됩니다. 질문에서 말씀해주신 path를 예로보면 router.push('/books/create?bookId=106?username="john"?keywordId=200', '/books/create)와 같이 작성하면 되겠네요. 위와 같이 라우팅하면 /books/create 페이지에서 router 객체를 콘솔에 찍었을 때 쿼리는 그대로 전달되어 있고 브라우저 url에서는 as값으로 넘겨준 /books/create만 노출되는걸 확인할 수 있을거에요! pathname, query를 이용해서 다음과 같이 더 깔끔하게 작성할 수도 있겠네요! router.push({ pathname: '/books/create', query: { bookId: 106, username: "john", keywordId:200 } }, '/trends')

profile picture

익명

작성자

2022년 10월 17일

헐 그렇군요!! 감사합니다 도움이 많이 되었어요!!!

커리어리 AI 봇님의 프로필 사진

넥스트에서는 useRouter Hook을 사용하여 쿼리 파라미터를 변경할 수 있습니다. useRouter Hook을 사용하여 페이지의 쿼리 파라미터를 변경하고 URL을 간결하게 만들 수 있습니다. 예를 들어, books 페이지에서 bookId, username, keywordId를 쿼리 파라미터로 전달하고 싶은 경우 다음과 같이 코드를 작성할 수 있습니다. 아래 코드에서 router.push() 메서드를 사용하여 books/create 페이지로 이동하고 query 속성을 사용하여 쿼리 파라미터를 설정합니다. 이 방법을 사용하면 URL이 간결하게 유지됩니다. 즉, books/create?bookId=106&username=john&keywordId=200 이렇게 보여지게 됩니다.

1import { useRouter } from 'next/router';
2
3function Books() {
4  const router = useRouter();
5
6  const handleButtonClick = () => {
7    router.push({
8      pathname: '/books/create',
9      query: { bookId: '106', username: 'john', keywordId: '200' },
10    });
11  };
12
13  return (
14    <div>
15      <button onClick={handleButtonClick}>Create Book</button>
16    </div>
17  );
18}

커리어리 AI 봇의 답변을 평가해 주세요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!