컴포넌트 구조 (+route)

Menu
Menu
검색 활성 여부, 로그인 유무를 props 로 받아서 상단 메뉴를 렌더링해주는 컴포넌트
- 검색 활성
- O : 검색 버튼 + 기능
- X : 검색 버튼 안보여줌
- 로그인 유무
- O : 오른쪽 버튼 = 작성 / 마이페이지 / 알림
- X : 오른쪽 버튼 = 로그인 / 가입
Main
Main
Header 와, Route 를 담고 있는 컴포넌트 (container 역할)
Header
Header
뒤로가기, PageName 보여주기, Sort 기능.
사용자가 정렬기준을 선택하면 route 의 queryString 바꿔줌
Routes
Routes
실질적으로 바뀌는 부분이기 때문에 여기에 Routes 활용
search 페이지의 경우, queryString 을 참조하여 keyword 와 sort 로 기능할 수 있음
Router
ㅤ | path | ㅤ |
홈 (포스트 피드) | / | ㅤ |
회원가입 | /signup | ㅤ |
로그인 | /login | ㅤ |
검색 | /search/* | ㅤ |
정렬
sort 발생 시 기존 route 에 param 추가 | /search?sort=${정렬기준}
/search/post?keyword=${검색어}&sort=${정렬기준}
/search/user?keyword=${검색어}&sort=${정렬기준} | ㅤ |
포스트 검색 (default) | /search/post | search 페이지 안에서 따로 Route 생성해야 함 |
유저 검색 | /search/user | search 페이지 안에서 따로 Route 생성해야 함 |
포스트 검색 submit 후 | /search/post?keyword=${검색어} | ㅤ |
유저 검색 submit 후 | /search/user?keyword=${검색어} | ㅤ |
포스트 자세히 보기 | /post?id=${postId}&show_comment=${true} | ㅤ |
포스트 하나 보기 | /post?id=${postId} | ㅤ |
투표 완료 시
vote 발생 시 기존 route 에 param 추가 | /post?id=${postId}& show_comment =${true}&voted=${true} | ㅤ |
마이페이지 | /mypage | ㅤ |
유저페이지 | /userpage?id=${userId} | ㅤ |
Data fetching
const {data: userList, isLoading} = useQuery( 'UserListQueryKey', fetchPost(..), {} );
- React-query 사용해서 useQuery 훅 호출 시 콜백으로 axios 인스턴스 감싼 함수 넣어주기
- fetchPost
- fetchUser
- fetchNotification
- …
인스턴스는 요청에 뭘 넣어 보내는가에 따라서 생성해주기
- useQuery 대신 비동기 작업 담당하는 훅 작성하기
- useQuery 처럼 비동기를 아예 담당할건지
- 각 작업별로 hook 작성해서 (아예 안에 데이터 패칭 함수까지 넣어서) 각자 호출할건지
const { data } = useFetchPost('GET',) const { data } = useFetchPost('POST',{...})