Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 구현
- 완전탐색
- 알고리즘
- DFS활용
- socket.io
- 블챌
- BFS
- 재귀
- 스택
- 자료구조
- CSS
- django
- 코딩테스트실력진단
- 코테
- JS
- react
- 그리디
- DP
- Express
- 백준
- 코드트리
- 파이썬
- react-query
- 스택자료구조
- DFS기초
- 백준알고리즘
- 코딩테스트
- DFS
- 문자열
- 그리디알고리즘
Archives
- Today
- Total
꾸준하게 거북이처럼
refactor : useMuate의 mutateAsync 사용해서 비동기 함수로 이벤트 이후 부분 처리하기 본문
고민했던 것
useMutate를 이용해서 자동으로 댓글 업데이트가 되도록 구현을 했지만, 이후에 '댓글 수정이 완료되었습니다!' alert같은 이벤트 이후 처리 부분을 어떻게 할지 고민했다.
해결한 방법
useMutate에서 제공하는 isSuccess를 이용해서 useEffect로 이후 처리를 했다.
하지만 이 방법은 먼가 코드가 깔끔하지 않았다..
더 찾아보니 mutateAsync 를 제공해서 이걸 사용하여 이벤트가 발생하면, 비동기 처리함수로 이후 동작을 처리할 수 있을 것 같았다.
개선해보기✨
이전 코드
const {
mutate: editMutate,
isSuccess: isEditSuccess,
isError: isEditError,
} = useEditComment(comment.postId, user.uid, newComment, comment._id);
// 댓글 수정 완료 여부 확인 및 업데이트.
useEffect(() => {
if (isEditSuccess) {
alert("댓글 수정 완료가 되었습니다!!");
setNewComment("");
setEditFlag(false);
return;
}
if (isDeleteError) {
alert("댓글 수정에 실패했습니다!!");
}
}, [isEditSuccess]);
const submitEditHandler = (e) => {
e.preventDefault();
if (!newComment) {
alert("댓글을 작성해주세요!");
}
editMuate();
}
개선한 코드
const {
mutateAsync: editMutateAsync
} = useEditComment(comment.postId, user.uid, newComment, comment._id); // useMutation반환.
const submitEditHandler = async (e) => {
e.preventDefault();
if (!newComment) {
alert("댓글을 작성해주세요!");
}
try {
const {
data: { success },
} = await editMutateAsync();
if (success) {
setNewComment("");
setEditFlag(false);
alert("댓글 수정이 완료되었습니다!");
}
} catch (error) {
alert("댓글 수정에 실패했습니다!");
}
};
개선한 코드가 훨씬 가독성도 좋아서 이 방향으로 코드를 수정하고자 한다.
'개인공부 > React' 카테고리의 다른 글
Intersection Observer API 로 무한 스크롤 구현해보기 (with React) (0) | 2024.02.04 |
---|---|
react-query: 자동으로 댓글 업데이트 시키기(useMutate, useQuery) (0) | 2023.06.27 |
React 외부 클릭시 모달 사라지게 하기 (0) | 2023.06.16 |
useState 와 useRef 의 차이점 (0) | 2023.06.07 |
Bearer token 방식으로 axios로 API 요청하기 (with create react app) (0) | 2023.05.23 |
Comments