[12팀 금정민] Chapter 2-3. 관심사 분리와 폴더구조#48
[12팀 금정민] Chapter 2-3. 관심사 분리와 폴더구조#48KumJungMin wants to merge 74 commits intohanghae-plus:mainfrom
Conversation
✍️ 셀프 회고🔄 리팩토링 방향에 대한 고민
🔍 작업하며 느낀 점
❓궁금한 점
|
suinkimme
left a comment
There was a problem hiding this comment.
코드가 정말 잘 정리되어 있다는 인상을 받았습니다. 읽는 동안 흐름이 끊기는 부분도 없었고, 많은 걸 배울 수 있었습니다. 특히 useXXXLogic처럼 훅에 붙인 네이밍이 개인적으로 매우 인상 깊고 괜찮다고 느꼈습니다.
| export const usePostTableLogic = () => { | ||
| const { tag: selectedTag, search, set: setFilter } = usePostTableStore() | ||
|
|
||
| const { posts, setSelectedPost, selectedPost, setPosts, deletePost: removeFromStore } = usePostStore() | ||
| const { setComments } = useCommentStore() | ||
| const { setSelectedUser } = useUserStore() | ||
|
|
||
| const [userId, setUserId] = useState<string | null>(null) | ||
|
|
||
| const { data: user } = useUserQuery(userId) | ||
| const { data: comments } = useCommentsQuery(selectedPost?.id) | ||
|
|
||
| const { posts: fetchedPosts, isLoading } = usePostsData() | ||
| const { mutate: deletePostMutate } = useDeletePost() | ||
| const { toggle } = useDialogStore() | ||
|
|
||
| useEffect(() => { | ||
| if (!isLoading) setPosts(fetchedPosts) | ||
| }, [isLoading]) | ||
|
|
||
| useEffect(() => { | ||
| if (comments?.comments && selectedPost?.id) { | ||
| setComments(selectedPost.id, comments.comments) | ||
| } | ||
| }, [comments, selectedPost?.id]) | ||
|
|
||
| useEffect(() => { | ||
| if (user) { | ||
| setSelectedUser(user) | ||
| toggle("userDetail", true) | ||
| } | ||
| }, [user]) | ||
|
|
||
| const handleTagClick = (tag: string) => { | ||
| setFilter({ tag }) | ||
| } | ||
|
|
||
| const handleOpenDetail = (post) => { | ||
| setSelectedPost(post) | ||
| toggle("postDetail", true) | ||
| } | ||
|
|
||
| const handleOpenEdit = (post) => { | ||
| setSelectedPost(post) | ||
| toggle("editPost", true) | ||
| } | ||
|
|
||
| const handleDeletePost = (post) => { | ||
| deletePostMutate(post.id) | ||
| removeFromStore(post) | ||
| } | ||
|
|
||
| const handleOpenUser = (user) => { | ||
| setUserId(user.id) | ||
| } | ||
|
|
||
| return { | ||
| search, | ||
| posts, | ||
| isLoading, | ||
| selectedTag, | ||
|
|
||
| handleOpenUser, | ||
| handleTagClick, | ||
| handleOpenDetail, | ||
| handleOpenEdit, | ||
| handleDeletePost, | ||
| } | ||
| } |
There was a problem hiding this comment.
여러 스토어를 하나의 훅에서 접근하는 방식은, 과제를 진행할 때는 잘못된 방식이라고 오해해서 피하려 했었습니다. 그런데 지금 보니 오히려 이 방식이 더 자연스럽고 효율적인 것 같네요.
과제 체크포인트
기본과제
목표 : 전역상태관리를 이용한 적절한 분리와 계층에 대한 이해를 통한 FSD 폴더 구조 적용하기
체크포인트
심화과제
목표: 서버상태관리 도구인 TanstackQuery를 이용하여 비동기코드를 선언적인 함수형 프로그래밍으로 작성하기
체크포인트
과제 셀프회고