개발자

Next.js 에서 url 의 hash 값 변경을 활용하는 방법이 있을까요?

2023년 03월 30일조회 1,402

Next.js 에서 router.push 이동을 하는데 url-hash 를 추가하고 { shallow: true } 옵션을 주려고 합니다. 이렇게 해시값을 이용해서 화면 이동 없이 화면에 그려주는 컴포넌트를 변경해주려고 합니다. 그런데 이렇게 할 경우 useEffect 에서 router.asPath 의 변화를 감지하지 못하는 문제가 발생하고 있어요. 이 문제 간단하게 해결하는 방법이 있을까요? 혹은 url-hash 를 사용하는 방법 자체가 잘못된걸까요?

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

답변 1

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

Next.js에서 URL의 해시 값을 변경하고 해당 변경을 감지하려면 'useRouter' 훅의 'routeChangeComplete' 이벤트를 사용할 수 있습니다. 이 이벤트는 페이지 이동이 완료되면 발생하며, 해시 값 변경시에도 발생합니다. 'useEffect' 내에서 이벤트 리스너를 설정하고 해제해주는 방식으로 'routeChangeComplete' 이벤트를 처리할 수 있습니다. 아래는 예시 코드입니다 위 코드에서 'routeChangeComplete' 이벤트가 발생할 때마다 'handleRouteChangeComplete' 함수가 호출되며, 변경된 URL을 인수로 받습니다. 이를 활용하여 해시 값 변경에 따른 로직을 구현할 수 있습니다. 해시 값을 사용하여 컴포넌트를 변경하는 것은 웹 애플리케이션에서 일반적인 방식 중 하나이므로, 잘못된 방법은 아닙니다. 다만, 페이지 내에서의 이동과 상태 변경을 처리하는 데 있어 해시 값을 사용하는 것이 항상 최선의 방법인 것은 아닙니다. 상황과 요구사항에 따라 적절한 방법을 선택하는 것이 중요합니다.

1import { useRouter } from 'next/router';
2import { useEffect } from 'react';
3
4function MyComponent() {
5  const router = useRouter();
6
7  useEffect(() => {
8    const handleRouteChangeComplete = (url) => {
9      console.log('Route changed:', url);
10      // 여기에서 해시 값 변경에 대한 로직을 구현하십시오.
11    };
12
13    router.events.on('routeChangeComplete', handleRouteChangeComplete);
14
15    return () => {
16      router.events.off('routeChangeComplete', handleRouteChangeComplete);
17    };
18  }, [router]);
19
20  // 나머지 컴포넌트 구현
21}

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

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

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

또는

이미 회원이신가요?

목록으로

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