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

[김정현] Sprint9 #283

Merged

Conversation

kjh9852
Copy link
Collaborator

@kjh9852 kjh9852 commented Aug 9, 2024

요구사항

기본

  • 자유 게시판 페이지 주소는 “/boards” 입니다.
  • 전체 게시글에서 드롭 다운으로 “최신 순” 또는 “좋아요 순”을 선택해서 정렬을 할 수 있습니다.
  • 게시글 목록 조회 api를 사용하여 베스트 게시글, 게시글을 구현합니다.
  • 게시글 title에 검색어가 일부 포함되면 검색이 됩니다.

심화

  • 반응형으로 보여지는 베스트 게시판 개수를 다르게 설정할때 서버에 보내는 pageSize값을 적절하게 설정합니다.
  • next의 prefetch 기능을 사용해봅니다.

주요 변경사항

  • 노트북으로 작업하다 화면이 안켜져서 다시 하고 있습니당..ㅠ
    그래서 아직 기능적인 부분이 덜 완성되었습니당 (정렬, 검색 까지 완료했습니다!)

스크린샷

screencapture-localhost-3000-boards-2024-08-10-01_19_28

멘토에게

  • 반응형으로 보여지는 개수를 다르게 할 때 window.inner값으로 접근을 하려했는데 안돼서 useEffect로 처리를 해야 됐는데 맞을까요??
  • prefetch 같은 경우는 어떤식으로 접근을 해야 될 지 몰라서 아직 못해봤습니다 ㅠ
    시도 해봤는데 pages폴더 안에 있는 컴포넌트에서만 된다는 블로그 글을 보았습니다. 저는 따로 BestPost와 Posts 컴포넌트에서 fetch를 하고 boards 디렉토리에 index에서 두개의 컴포넌트(BestPost,Posts)를 불러오는 방식으로 되어 있는데 이러면 prefetch 기능을 사용하려면 boards디렉토리의 index에서 무조건 fetch를 해야하나용??
  • 08-12 // 커스텀 훅이랑 prefetch 적용해보았습니다. 커스텀훅을 어떻게 구성해야 될 지 잘 몰라서 예전에 듣던 강의 방식대로 짜게 되는데, 재사용성이나 유지보수성은 좋을지 몰라도 너무 복잡한게 아닐까 싶습니당.
  • 빨간줄이 뜨다 보니 같은 타임을 여러곳에다 반복해서 넣다보니 이게 맞게 하는 건가 싶습니다 ㅠ

@kjh9852 kjh9852 added 매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다. 미완성🫠 죄송합니다.. labels Aug 9, 2024
@kjh9852 kjh9852 requested a review from lisarnjs August 9, 2024 16:25
@kjh9852 kjh9852 removed the 미완성🫠 죄송합니다.. label Aug 10, 2024
Copy link
Collaborator

@lisarnjs lisarnjs left a comment

Choose a reason for hiding this comment

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

useEffect(() => {}, []) 에서 window.innerSize를 감지하는 것 너무 좋습니다!

prefetch는 필요한 곳에 Next/Link 태그만 사용해주셔도 됩니다 :)
https://medium.com/hcleedev/web-next-js-link%EC%99%80-prefetch-%EA%B3%BC%EC%A0%95-%ED%8C%8C%ED%97%A4%EC%B3%90%EB%B3%B4%EA%B8%B0-44e22ace13e7

타입도 types라는 폴더에 용도에 맞게 파일을 만들어주고 export 해보세요!

정현님 이번 미션도 너무 고생하셨습니다!
이번 한 주도 화이팅이에요 :)

}

export default function LinkButton({
href,
Copy link
Collaborator

Choose a reason for hiding this comment

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

이런 props들의 기본 값을 설정해주면 동작을 명확히 하는데 도움을 줄거에요!

return (
<>
<button
className={`${styles.button} ${className}`}
Copy link
Collaborator

Choose a reason for hiding this comment

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

classname을 부여하는데 조건식이 필요하다면 classnames라는 라이브러리를 사용해보세요! 아주 편하고 좋습니다 ㅎㅎ

}

return (
<>
Copy link
Collaborator

Choose a reason for hiding this comment

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

이 빈 태그는 불필요해보이는데 제거해도 좋을 것 같아요!

import NAVIGATION_LIST from '@/utils/NAVIGATION_LIST';
import styles from './Header.module.css';

const navList = NAVIGATION_LIST.map(list => (
Copy link
Collaborator

Choose a reason for hiding this comment

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

이 부분을 컴포넌트로 분리하면 좋을 것 같네요!

mobile: 768,
};

function getBestPostSize() {
Copy link
Collaborator

Choose a reason for hiding this comment

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

window객체를 참조하는 함수가 컴포넌트 외부에 위치해서 오류가 발생할 수 있어요. 컴포넌트 내부로 이동하는 것이 좋을 것 같아요 👍

import usePostList from '@/hooks/usePostList';

interface OptionType {
orderBy: string | string[] | undefined;
Copy link
Collaborator

Choose a reason for hiding this comment

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

interface OptionType {
  orderBy: 'recent' | 'like';
  keyword?: string;
}

처럼 string이 특정 값만 가질 수 있도록 제한하는 타입으로 정의하는 것이 가장 좋은 방법이에요! (제한할 수 있다면)

keyword: options.keyword,
};
getPost({ query });
}, [options]);
Copy link
Collaborator

Choose a reason for hiding this comment

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

options자체를 의존성배열에 적어주는 것보다는 options.orderBy, options.keyword를 직접 포함시켜서 불필요하게 실행되는 경우를 방지해주는 것이 좋습니다 :)

}, [options]);

const showSortOptionHandler = () => {
setIsSortOpen(prev => !prev);
Copy link
Collaborator

Choose a reason for hiding this comment

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

prev로 이전 값을 통한 업데이트 너무 좋습니다!

@lisarnjs lisarnjs merged commit 4a459b0 into codeit-bootcamp-frontend:Next-김정현 Aug 13, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants