From 5b18aa16ec195e13ac80d5722e5020a6ed9e0927 Mon Sep 17 00:00:00 2001 From: arch-spatula Date: Thu, 12 Jan 2023 12:00:50 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=ED=8C=8C=EC=9D=B4=EC=96=B4?= =?UTF-8?q?=EB=B2=A0=EC=9D=B4=EC=8A=A4=20=EA=B2=BD=EA=B3=A0=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0=20#1=20#2=20#3=20#15?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Hooks/usePill.js | 48 ++++++++++++++++++-------------------------- 1 file changed, 20 insertions(+), 28 deletions(-) diff --git a/src/Hooks/usePill.js b/src/Hooks/usePill.js index 64d88d7..92281c3 100644 --- a/src/Hooks/usePill.js +++ b/src/Hooks/usePill.js @@ -14,7 +14,6 @@ import { // 약 추가 함수 / firestore에 약 새로운 약 정보 추가 const addPill = ({ newPill }) => { - console.log('newPill', newPill); return addDoc(collection(dbService, 'pill'), newPill); }; @@ -38,11 +37,9 @@ export const useAddPillData = () => { }, ]); - // 성공을 가정하고 새로운 값으로 업데이트합니다. // 버그 발생 지점 - // old가 select 처리된 객체배열 데이터가 아니라 쿼리데이터의 전체 객체모임이라 정제 필요했음. + // 성공을 가정하고 새로운 값으로 업데이트합니다. queryClient.setQueryData(['pill-list'], (old) => { - const prev = old.docs.map((doc) => ({ ...doc.data(), id: doc.id })); - return [...prev, newPill]; + return { ...old, docs: [...old.docs, { data: () => newPill }] }; }); // snapshot 한 값을 context 내부 값으로 반환합니다. @@ -81,7 +78,6 @@ export const useGetPillData = (uid) => { refetchOnWindowFocus: true, // TODO: 실시간 업데이트 반영 옵션 활성화하기 select: (data) => { - console.log(data); const dataArr = []; data.docs.forEach((doc) => dataArr.push({ ...doc.data(), id: doc.id })); @@ -131,23 +127,20 @@ export const useToggleTakenPill = () => { // 새롭게 변형된 데이터로 설정합니다. queryClient.setQueryData(['pill-list'], (old) => { - const dataArr = []; - old.docs.forEach((doc) => { - if (doc.id === togglePill.id) { - dataArr.push({ - ...doc, - data: () => { - return { - ...doc.data(), - isTaken: !togglePill.togglePayload.isTaken, - }; - }, - }); - } else { - dataArr.push({ ...doc }); - } - }); - return { ...old, docs: [] }; + return { + ...old, + docs: old.docs.map((doc) => { + return doc.id === togglePill.id + ? { + ...doc, + data: () => ({ + ...doc.data(), + isTaken: !togglePill.togglePayload.isTaken, + }), + } + : doc; + }), + }; }); // 저장한 값을 먼저 반환합니다. @@ -236,11 +229,10 @@ export const useDeletePillData = () => { // 새롭게 변형된 데이터로 설정합니다. queryClient.setQueryData(['pill-list'], (old) => { - const data = []; - old.docs.forEach((doc) => data.push({ ...doc.data(), id: doc.id })); - console.log(data, deletedPill); - - return data.filter((doc) => doc.id !== deletedPill); + return { + ...old, + docs: old.docs.filter((doc) => doc.id !== deletedPill), + }; }); return { previousPillList };