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