Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- SCSS forward
- vuex map
- git 같은계정 다른 컴퓨터
- vue 이벤트 수신
- Spacer
- 쌓임맥락
- netlify redirect
- vue 지역 컴포넌트
- 리스트 렌더링
- SCSS extend
- KDT 프로그래머스
- 리액트
- 다른컴퓨터에서 git사용
- 프로그래머스 K_Digital Training
- nextjs사용법
- react next
- SCSS use
- postcss
- 고양이 사진 검색기
- KDT 프로그래머스 데브코스 프론트엔드
- vue mixin
- 폼 입력 바인딩
- 프로그래머스 데브코스
- flex
- Vue
- 프로그래머스 데브코스 프론트엔드
- SCSS import
- intersection opserver
- 이벤트 수식어
- 프로그래머스 프론트엔드 데브코스
Archives
- Today
- Total
혼자 적어보는 노트
[Next.js] router.query 값 가져오기 본문
상세 페이지를 course/[id].tsx로 해놓고 실제로 있는 페이지인 경우 (id로 서버 요청 후 값이 있다면)
페이지를 보여주고, 없는 페이지인 경우 메인으로 redirect처리를 하려고 했다.
그런데 useEffect로 router.query.id 받아서 확인해보니 undefined가 뜬다??
기본적으로 router.query.id가 채워져서 나올 줄 알았는데
useEffect에서 확인해보니 query값이 없다가 이후에 string | string[] 으로 채워진다.
useEffct로 id 확인하기
const courseId = router.query.id
useEffect(() => {
if (typeof courseId === 'string') { //처음엔 undefined이기 때문에 string으로 확인
if (Number.isNaN(courseId)) {
alert('잘못된 요청입니다.');
router.push('/');
return;
}
getCourseInfo(courseId);
}, [courseId]);
더 나은 방법이 있을 수도 있지만 일단 이런식으로 1차적으로 검증을 하고
getCourseInfo에서 서버 요청 시 값이 없을 경우 튕겨주는 식으로 구현했었다.
serversideProps를 활용하기
export const getServerSideProps = async (context: NextPageContext) => {
const { id } = context.query;
const courseId = Number(id);
if (Number.isNaN(courseId)) {
return {
notFound: true
};
}
return {
props: { courseId: courseId }
};
};
serversideProps를 사용해서 query Id를 바로 얻을 수도 있다.
serversideProps 내부에 서버요청까지 하면 잘못된 페이지에 접근 시 페이지를 보여주기 전에 튕기도록 구현할 수 있다.
'NextJS' 카테고리의 다른 글
[Next.js] 페이지 이동 시 로딩 (0) | 2022.08.19 |
---|---|
[Next.js] 카카오톡 공유하기 (0) | 2022.08.13 |
[Next.js] 페이지마다 다른 Layout (0) | 2022.08.03 |
[Next.js] Image height auto 사용 (0) | 2022.07.30 |
[Next.js] Link와 href (0) | 2022.07.29 |
Comments