Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[6주차] 댄서포트(Dan-support) 미션 제출합니다. #15

Open
wants to merge 51 commits into
base: master
Choose a base branch
from

Conversation

sujinRo
Copy link

@sujinRo sujinRo commented May 19, 2023

안녕하세요, 댄서포트 노수진, 신유진입니다~~! 😊😂

저희는 이번에 추가 기능으로 리액트 쿼리의 useInfiniteQuery와 react-infinte-scroller 라이브러리를 사용하여 무한 스크롤까지 구현하였습니다!
app directory로 하면서 어려움을 겪어,,, page directory로 안 한걸 후회했습니다,,,ㅜㅜ
열심히 했으니, 잘 봐주세요! 하하

해결하지 못한 부분

-리액트 쿼리를 이용하여 Next.js 13의 app 디렉토리 버전에서 SSR을 적용하는 방법을 찾아 구현하려고 했으나 아직 구현하지 못했습니다…. (app 디렉토리 버전에서는 getServerSideProps를 지원하지 않더라구여,,,,,,) 혹시 이런 방법으로 SSR 적용하신 분 있으신가요??

참고자료)
https://tanstack.com/query/v4/docs/react/guides/ssr](https://tanstack.com/query/v4/docs/react/guides/ssr

배포링크

6주차 배포링크!

Key Question

1) 정적 라우팅(Static Routing)/동적 라우팅(Dynamic Routing)이란?

라우팅이란 페이지 이동을 뜻합니다.

<정적 라우팅>
정적 라우팅은 고정된 페이지로 라우팅 하는 것으로, 누가 언제 접속하더라도 같은 페이지로 라우팅됩니다. 대표적인 예시로는 /login 페이지가 있습니다.

<동적 라우팅>
동적 라우팅은 가변적으로 라우팅하는 것으로, 실제 소스 코드는 한 페이지이지만, 글 번호, id에 따라 주소가 변경됩니다. 대표적인 예시로는 게시물의 상세보기 페이지가 있습니다.
Next.js에서 동적 라우팅 시, 대괄호 속 문구는 변수 기능을 합니다.

2) 성능 최적화를 위해 사용한 방법

'next.js에서 제공하는 next/Image를 이용해 Lazy loading'

이미지 영역이 화면에 보이지 않을 때는 이미지를 불러오지 않고, 화면에 보이게 되었을 때, 이미지를 불러오는 방식입니다.

paya17 and others added 30 commits May 10, 2023 21:47
Landing페이지와 Home페이지 합침
feat: 랜덤 이미지 기능,스크롤시 헤더 스타일 변화 기능
design: Home페이지 애니메이션 추가
Copy link

@YelynnOh YelynnOh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

안녕하세요 이번주 코드 리뷰 파트너 바리바리 팀의 오예린입니다!🔥

Nextjs 버전 13을 사용한 팀을 만나네요! app 디렉토리로 작업하시느라 수고하셨습니다ㅠㅜ
코드를 보면서 컴포넌트 파일 분리가 잘 되어 있다는 느낌을 받았고, 그래서 전반적으로 코드가 깔끔하다는 생각이 들었습니다! 저희랑 비슷한 코드 맥락도 많아서 더 많이 배울 수 있었던 것 같네요 ㅎㅎ

이번주 과제도 수고많으셨습니다~!👍👍

},
},
);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

댄서포트 팀도 useInifiniteQuery 활용하셨군요..! useInfiniteQuery를 다른 파일로 분리해서 작성하니깐 외려 더 깔끔한 것 같기도 하네요!!🙌

</Hydrate>
);
}
*/

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

허허 Nextjs 13 버전 사용한 팀을 드디어 만나네요..😂 고생많으셨습니다..
저희도 댄서포트 팀처럼 ssr 사용하려 했는데 오류가 나고 배포도 안되어서 지울 수 밖에 없었습니다ㅜㅠ
Nextjs 13의 경우 베타 버전이기 때문에 ssr이 적용되지 않은 경우가 많다고 하네요...! 참고자료 놓고 가겠습니다!


const Content = styled.div`
display: flex;
flex-basis: 20%;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

지난주 발표에서 언급하셨던 깔끔한 푸터의 비결..! 또 배워갑니다😎

window.removeEventListener('scroll', handleScroll);
};
}, []);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

앗 헤더에 scroll 관련 내용이 왜 있었나 했는데 스크롤을 내리면 헤더 배경 색이 바뀌는 거였군요! 굿굿입니다👍

Copy link
Member

@moong23 moong23 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

안녕하세요 Hooking팀의 김문기입니다~!

전체적으로 코드가 깔끔하기두 한데, 리펙토링도 잘되어있는 것같아서
코드 보는데 매우 편했습니다!!!

이번주 과제두 고생 많으셨어요!!! 담주부터 시작하는 협동 과제도 화이팅입니다~!!!

`;

export default function DetailPage(){
const params = useSearchParams();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

동적 라우팅된 파일에서 useSearchParams를 사용하면 client side에서 쉽게 라우팅된 파일의 주소를 알 수 있겠네요~!

Comment on lines +38 to +43
const Image = styled.img`
object-fit: cover;
height: 415px;
width: 375px;
position: relative;
`;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이부분은 Next/Image를 사용하면 렌더링 최적화에 도움이 조금이나마 되지않을까...싶어요

Comment on lines +30 to +34
{!searchText ? (
<DafaultMovieList />
) : (
<SearchMovieList searchText={searchText} />
)}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

searchText의 여부에 따라 다른 리스트를 보여주는것 좋은 것 같습니다!
SearchMovieList가 렌더링 될 때 페이지 내부에서는 defaultMovieList가 생성된 상태로 대기중이여서
searchText 전환에 따른 렌더링 속도에는 도움이 될 수도 있을 것 같아요!

Comment on lines +75 to +95
{pathname === item.link ? (
<>
<Image
src={`/assets/Footer/selected${item.name}.svg`}
alt="item"
width={20}
height={20}
/>
<Text color="white">{item.text}</Text>
</>
) : (
<>
<Image
src={`/assets/Footer/${item.name}.svg`}
alt="item"
width={20}
height={20}
/>
<Text>{item.text}</Text>
</>
)}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

여기는 return의 html코드를 삼항연산자를 통해 구현하는 것보다, pathname===item.link값을 Image의 props로 넘겨주고, styled-component상에서 삼항연산자를 통해 fillcolor을 통해 각각 svg와 text값에 색을 넣어주는것이 좀 더 깔끔할 것 같습니다...!

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저도 원래 그걸 도전했는데,,, 이상하게 색이 안 변하더라구요,,, 다시 도전해보겠슴당,,

Comment on lines +41 to +57
useEffect(() => {
const handleScroll = () => {
const currentPosition = window.pageYOffset;

if (currentPosition >= 100) {
setScroll(true);
} else {
setScroll(false);
}
};

window.addEventListener('scroll', handleScroll);

return () => {
window.removeEventListener('scroll', handleScroll);
};
}, []);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

scroll이벤트 관련해서 이거랑 똑같이 적용해도 왜 저희팀 코드에서는 적용이 안됐을까요 ㅠㅠㅠㅠㅠ

Comment on lines +16 to +27
const { data, fetchNextPage, hasNextPage } = useInfiniteQuery(
['page'],
({ pageParam = 1 }) => getNowPlayingMovies(pageParam),
{
getNextPageParam: (lastPage, allPosts) => {
return lastPage.page !== allPosts[0].total_pages
? lastPage.page + 1
: undefined;
},
},
);

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

useinfiniteQuery가 상당히 코드 깔끔하게 작성되네요 저도 한번 공부해봐야겠어요 ㅠㅠ

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants