2023.09.01
어느새 중간발표 시간이 다가왔다. 주말동안 프로젝트를 다듬어 보자.
동행 페이지 디테일 Info CSS, 스팟 공유 수정 시 지도 찍어 주기, 텍스트 에디터 커스텀
해당 게시물의 디테일 페이지에서 삭제를 하면 useNavigate로 게시물 리스트를 보여주는 리스트 페이지로 이동되게 구현했습니다. 문제는 리스트 페이지에 삭제된 게시물이 새로고침 하기 전에는 여전히 남아있는 문제가 있었습니다.
const mutation = useMutation(deleteSpotSharePost, {
onSuccess: async () => {
await queryClient.invalidateQueries(['spotSharePost']);
},
});
const deletePostHandle = (id: string | undefined) => {
mutation.mutate(id);
navigate('/spotshare');
};
문제는 동기적으로 실행되는 mutation.mutate(id)와 navigate('/spotshare')였습니다.
게시물이 삭제 되기 전 리스트 페이지로 이동 되어서 생긴 문제였습니다.
navigate('/spotshare')를 useMutation의 onSuccess에서 동기 적으로 실행되게 해결해 주었습니다.
const mutation = useMutation(deleteSpotSharePost, {
onSuccess: async () => {
await queryClient.invalidateQueries(['spotSharePost']);
navigate('/spotshare');
},
});
const deletePostHandle = (id: string | undefined) => {
mutation.mutate(id);
};
질문 - 동기와 비동기의 차이에 대해 설명해주시고 비동기프로그래밍의 필요성에 대해 답변해주세요.
동기는 모든 작업이 순차적으로 실행되어 어떤 작업이 수행 중이라면 다음 작업은
대기하게 됩니다.
비동기는 작업이 독립적으로 실행되어 한 작업이 시작되더라도 완료를 기다리지 않고
다음 작업을 시작할 수 있습니다. 여러 작업을 동시에 처리해 시스템의 자원을 절약할 수 있습니다.