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

Feature/common layout #16

Merged
merged 7 commits into from
Oct 16, 2024
Merged

Feature/common layout #16

merged 7 commits into from
Oct 16, 2024

Conversation

lee1nna
Copy link
Collaborator

@lee1nna lee1nna commented Sep 21, 2024

Pull Request 요약

PR에 대한 내용을 작성해주세요.

공통 레이아웃 작업 관련 PR입니다.


작업 내용

작업 내용에 대해서 작성해주세요.

  • 레이아웃 폴더 구조 변경
  • 네비게이션 UI 개발
  • 전체 레이아웃 UI 개발
  • 공통 모달 UI 개발

참고 사항

참고 사항이 있다면 첨부해주세요.


관련 이슈

closing할 이슈 번호를 작성해주세요.


@lee1nna lee1nna added the feat 구현, 개선 사항에 관련된 이슈입니다. label Sep 21, 2024
@lee1nna lee1nna self-assigned this Sep 21, 2024
Copy link

netlify bot commented Sep 21, 2024

Deploy Preview for prostargram failed.

Name Link
🔨 Latest commit ac79561
🔍 Latest deploy log https://app.netlify.com/sites/prostargram/deploys/670e36b1385f070007b99865

- 새 피드 메뉴 일반피드, 토론 피드로 분리
- 네비게이션바, 메인 css 수
Copy link
Collaborator

@seongjin2427 seongjin2427 left a comment

Choose a reason for hiding this comment

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

레이아웃 코드 작성하시느라 고생 많으셨어요!
제 개인적인 의견 첨부해봤습니다!!
한번 확인 부탁드려요! 👍

const Navigation = () => {
// TODO: 추후 menu url 수정 필요
const menus = [
const [disscussionModal, setDisscussionModal] = useState(false);
Copy link
Collaborator

Choose a reason for hiding this comment

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

모달을 열고 닫는 것에 대한 상태는 하나만 있어도 되지 않을까요?
일반 피드와 토론 피드를 동시에 열고 닫을 경우가 없을 것이라는 생각이 들어서요! 🤔

@@ -48,13 +99,14 @@ const Navigation = () => {
return (
<li
className={clsx(styles.menu_item, {
[styles.active]: activeMenu === idx,
[styles.active]: activeMenu === idx && menu.type === 'page',
Copy link
Collaborator

Choose a reason for hiding this comment

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

activeMenu === idx로 배열 인덱스로 활성화 된 메뉴인지를 비교하는 것 보다
usePathname을 통해 현재 페이지의 url과 menu.url이 일치하는지 여부로 확인해보면 어떨까요?
Link API를 통해 각 메뉴에 대해서 클릭 시, 전달된 menu.url로 이동이 될테니 굳이 상태를 쓰지 않고도 가능할 것 같아서요!

참고 링크: Next.js 공식문서 - usePathname

icon: ReactNode;
component?: ReactNode;
modalStatus?: boolean;
setComponentStatus?: React.Dispatch<SetStateAction<boolean>>;
Copy link
Collaborator

Choose a reason for hiding this comment

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

개인적으로는 (React.)Dispatch타입을 사용하고 SetStateAction타입을 import하는 것에 대해서 부정적인 생각을 가지고 있어요!
반드시 사용해야 하는 곳이 아니라면, 왠만한 상황에서는 import하지 않아도 된다고 생각하거든요!

물론.. import 하는 것 자체에 대해서는 문제가 없지만, 불필요한 코드라고 생각해서요 🤔 하하

setComponentStatus의 타입을 (bool: boolean) => void;으로 설정해 두고,
아래와 같이 toggleFeedModal (가명)이라는 함수로써

const toggleFeedModal = (bool: boolean) => {
  setFeedModal(bool);
};

로만 선언해두고 활용하면 다른 코드들을 모두 대체하면서도, SetStateAction를 import 하지 않아도 되니까요!

};

// TODO: 추후 menu url 수정 필요, 모달 대체 필요
const menus: MenuType[] = [
Copy link
Collaborator

Choose a reason for hiding this comment

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

(단순 개인 의견입니다 😅)
MenuType에 대해서 모달이 필요한 ModalMenuTypeMenuType을 분리하면 어떨까요?

현재는 menus라는 하나의 변수안에
일반 메뉴와 피드를 작성해야 하는 메뉴에 대해서 서로 다른 동작을 하는 메뉴가 합쳐져 있어서
type에 따라 조건부로 동작을 달리해야 하니 복잡성이 조금 높다는 생각이 들어서요!

일반 메뉴와 모달을 사용하는 메뉴를 분리하여 별도의 컴포넌트로 만들면,
여기 Navigation에서 props로 받아 따로따로 렌더링 하면 역할도 구분되고
추후 수정 시, 필요한 컴포넌트만 수정하고
다른 동작을 하는 다른 메뉴가 생기면 해당 메뉴에 대한 컴포넌트만 구현해서 추가하면 되니까요!

코드가 늘어난다는 단점이 있지만, 역할 분리와 결합도를 낮추는 측면에서는 도움이 될 것 같은데,
한나님은 어떻게 생각하시는지 궁금합니다! 😉

- 모달 상태 하나로 통일
- usePathname을 사용해 url 일치 여부로 메뉴 활성화
- 모달메뉴와 일반메뉴  분리
- React.Dispatch<SetStateAction<boolean> 타입 제거
Copy link

Quality Gate Failed Quality Gate failed

Failed conditions
8.4% Duplication on New Code (required ≤ 3%)

See analysis details on SonarCloud

@lee1nna lee1nna merged commit ac79561 into develop Oct 16, 2024
1 of 6 checks passed
@lee1nna lee1nna deleted the feature/common-layout branch December 16, 2024 06:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feat 구현, 개선 사항에 관련된 이슈입니다.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

공통 레이아웃 작업 (네비게이션, 레이아웃, Modal)
2 participants