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

Style/#273: 공지사항 리스트 UI 변경 #274

Merged
merged 32 commits into from
Nov 17, 2023
Merged

Style/#273: 공지사항 리스트 UI 변경 #274

merged 32 commits into from
Nov 17, 2023

Conversation

pp449
Copy link
Member

@pp449 pp449 commented Oct 15, 2023

🤠 개요

  • 공지사항 리스트 UI를 수정했어요
  • 공지사항 검색 기능을 추가했어요

💫 설명

기존의 공지사항 페이지는 공지사항 페이지 내부에서 학교, 학과 공지사항을 나누어서 보여줬고 일반, 고정 공지사항은 확성기 아이콘을 통해서 구분하고 스크롤을 통해서 아래로 내려가야만 일반 공지사항을 확인할 수 있었어요. 만약, 알림이 왔을 때 해당 공지사항이 일반 공지사항이라면 사용자가 확인하기 위해서 아래로 내려가야 하고, 고정 공지사항의 양에 비례해서 스크롤도 많아지므로 불편함으로 이어질 수 있겠다고 생각했어요. 따라서 홈페이지에서 학교, 학과 공지사항을 구분하고 각 공지사항 페이지 내부에서 일반, 고정 공지사항을 버튼으로 구분하기로 했어요. 그리고, 공지사항 검색 기능도 추가 했어요

  • 일반, 고정 공지사항 구분 예시

    • 일반 : /announcement/school/normal
    • 고정 : /announcement/school/pinned
  • 검색 공지사항 예시

    • 검색 : /announcement/school/search?q=프로그래밍

검색을 하면 url이 변경되고 컴포넌트가 리렌더링 되어서 api 호출 하는 코드도 한번 더 실행되는 문제가 있었어요. 이미 가져온 데이터에 검색 키워드가 있는지 확인하는데, url을 변경하다보니 불필요한 api 호출을 하기 때문에 useMemo를 활용해서 컴포넌트가 처음 렌더링 될 때만 api 호출을 하도록 했어요

📷 스크린샷 (Optional)

변겅 전

변경 후

@pp449 pp449 self-assigned this Oct 15, 2023
@hwinkr hwinkr assigned hwinkr and unassigned pp449 Nov 3, 2023
hwinkr added 22 commits November 4, 2023 15:48
- AnnouncementCategory : 'shool', 'major'와 같이 공지사항 분류 타입을 설정
- AnnouncementType : '일반', '고정' 처럼 확인 가능한 공지사항의 분류 타입을 설정
- 컴포넌트 내부에서 정의한 onClick 메서드 대신, 유틸 함수 openLink 함수 사용
- 경계선을 표현하는 스타일 컴포넌트 이름 변경 -> Vertical, Horizon 으로 종류를 구분
- prop으로 받는 type은 normal, pinned, search 셋 중 하나이며 type에 따라 다른 데이터를 사용해 렌더링 하도록 함
- search 같은 경우는 검색, 검색 결과를 확인, 검색 결과를 렌더링등 로직이 많기 때문에 AnnounceSearchList 컴포넌트를 추가로 구현
- 전공 컨텍스트에서 전공과 관련되어 있는 졸업요건 링크도 책임을 져야 한다고 판단
- TITLE: 공지사항 제목
- CATEGORY: 공지사항 분류, 어학 취업정보가 추가될 경우 여기에 추가할 수 있도록 함
- TYPE: API를 통해 가져온 공지사항을 분류
- 아직 상수로 빼지 못한 path들은 이 후 작업에서 빼도록 함
- announcement/<category>/<type> 에 따라서 컴포넌트를 렌더링 하도록 함
- title : 공지사항 제목을 표현 ex) 학교 공지사항
- category : 공지사항 분류를 표현 ex) announcement/school -> 학교 공지사항
- endPoint : 공지사항을 가져오기 위한 api endPoint를 표현
- 이 3가지 props만 전달하면 검색, 일반 & 공지 필터링, 공지사항 리스트 렌더링을 책임지는 컴포넌트를 렌더링 할 수 있음
- InformCardList: 공지사항 관련 카드 컴포넌트를 추상화
- 홈페이지 컴포넌트에서 담당하던 graduationLink의 상태 관리를 MajorPovider로 이전
@pp449
Copy link
Member Author

pp449 commented Nov 6, 2023

✅관심사 분리에 집중하여 코드가 많이 리팩토링 된거 같아요!

해당 PR 이 제 이슈와도 관련된 PR 이라 approve 가 안되네요 ㅎㅎ
직접 approve 하고 올리면 될 거 같아요!

@hwinkr hwinkr merged commit dbdf111 into dev Nov 17, 2023
1 check passed
@hwinkr hwinkr deleted the style/#273 branch November 17, 2023 03:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants