From a38a8e7578f33c2fd86c7a6f245f0344092fa612 Mon Sep 17 00:00:00 2001
From: Hyunjin <noh0605@ajou.ac.kr>
Date: Sun, 16 Jul 2023 01:24:06 +0900
Subject: [PATCH] =?UTF-8?q?=EC=9E=AC=EA=B2=80=EC=83=89=ED=95=B4=EB=8F=84?=
 =?UTF-8?q?=20=EC=A2=8B=EC=95=84=EC=9A=94=20=EB=AA=A9=EB=A1=9D=20=EC=9C=A0?=
 =?UTF-8?q?=EC=A7=80=EA=B9=8C=EC=A7=80=20=EB=8B=A4=20=EC=99=84=EB=A3=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/App.js | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/App.js b/src/App.js
index a828a64..1dd15cf 100644
--- a/src/App.js
+++ b/src/App.js
@@ -11,7 +11,8 @@ export default function App () {
     
     const [likes, setLikes] = React.useState({});//좋아요결과
     const [snackState, setSnackState] = React.useState({open: false, msg:''})//스낵바열림결과
-    
+    const [favorites, setFavorites] = React.useState([]);//재검색해도 Favorites목록이 리셋되는 것을 막기 위해 Favorites 모아놓은 상태변수 만듦
+
     const handleTabChange = (event, newValue) => {//탭
         setCurrentTab(newValue);
     }
@@ -19,6 +20,15 @@ export default function App () {
     const toggleFavorite = (id, name) => {//좋아요와 스낵바 상태 업데이트
         setLikes(prevLikes => ({...prevLikes, [id]: !prevLikes[id]}));//기존의 모든 키-값 쌍을 복사한다음 뒤에 써져있는대로 업데이트함
         setSnackState({open: true, msg: `${name} is clicked`})
+        if (likes[id]) {//이미 좋아요를 한 item이라면
+            setFavorites(prevFavorites => prevFavorites.filter(item => item.collectionId !== id));
+        } 
+        else {//그게 아니라서 굳이 신경쓸 필요 없으면
+            const selectedItem = searchResult.find(item => item.collectionId === id);
+            if (selectedItem) {
+              setFavorites(prevFavorites => [...prevFavorites, selectedItem]);
+            }
+        }
     }
 
     const handleSnackbarClose = (event, reason)=> {//스낵바 닫기
@@ -51,7 +61,7 @@ export default function App () {
             {currentTab == 1 && 
             <>
             <Typography align = "center" variant = "h5"> Favorites </Typography>
-            <Favorites list = {searchResult} likes = {likes} toggleFavorite = {toggleFavorite}/>
+            <Favorites list = {favorites} likes = {likes} toggleFavorite = {toggleFavorite}/>
             </>}
             {currentTab == 2 && <Typography align = "center" variant = "h5"> More Contents </Typography>}
             <SnackMsg open = {snackState.open} message = {snackState.msg} onClose = {handleSnackbarClose}/>
-- 
GitLab