From 39b1ee99f57827b7475ffbc208b8506b8942451f Mon Sep 17 00:00:00 2001 From: Hyunjin <noh0605@ajou.ac.kr> Date: Sat, 15 Jul 2023 15:29:12 +0900 Subject: [PATCH] right before excercise --- src/App.js | 8 ++++---- src/Favorites.js | 6 ++++++ src/MusicList.js | 8 ++++---- src/SearchPage.js | 2 +- 4 files changed, 15 insertions(+), 9 deletions(-) create mode 100644 src/Favorites.js diff --git a/src/App.js b/src/App.js index c2d70e5..b8ec493 100644 --- a/src/App.js +++ b/src/App.js @@ -1,12 +1,12 @@ import React from 'react'; -import MusicList from './MusicList'; -import music_list from './data'; -import {Box, Tabs, Tab, Typography, AppBar, CssBaseline} from '@mui/material'; +import MusicList from './MusicList.js'; +import music_list from './data.js'; import SearchPage from './SearchPage'; +import {Box, Tabs, Tab, Typography, AppBar, CssBaseline} from '@mui/material'; export default function App () { const [currentTab, setCurrentTab] = React.useState(0); - const [searchResul, setSearchResult] = React.useState([]); + const [searchResult, setSearchResult] = React.useState([]); const handleTabChange = (event, newValue) => { setCurrentTab(newValue); } diff --git a/src/Favorites.js b/src/Favorites.js new file mode 100644 index 0000000..853188f --- /dev/null +++ b/src/Favorites.js @@ -0,0 +1,6 @@ +/* +1. 전역변수 사용하지 말것 +2. SearchPage에서 가수 2~3명의 음악을 검색하고, 좋아요를 클릭하고, +Favorites 페이지를 보았을 때, 여러 가수들의 노래들이 표시되어야 하고, +Favorites에서 좋아요를 다시 클릭하면, 그 음악이 사라져야 합니다. +*/ diff --git a/src/MusicList.js b/src/MusicList.js index 72565a4..672d581 100644 --- a/src/MusicList.js +++ b/src/MusicList.js @@ -19,9 +19,9 @@ const styles = { export default function MusicList ({list}) { const [likes, setLikes] = React.useState({}); let [snackState, setSnackState] = React.useState({open: false, msg:''}) - const toggleFavorite = (id) => () => { + const toggleFavorite = (id, name) => () => { setLikes({...likes, [id]: !likes[id]}); - setSnackState({...snackState, open: true, msg: `${id} is clicked`}) + setSnackState({...snackState, open: true, msg: `${name} is clicked`}) } const handleSnackbarClose = (event, reason)=> { if(reason === 'clickaway'){ @@ -33,13 +33,13 @@ export default function MusicList ({list}) { <div> {list.map(item => { return ( - <Card sx={styles.card} key={(item.collectionId)}> + <Card sx={styles.card} key={item.collectionId}> <CardContent> <Typography varient = "subtitle1"> {item.artistName} </Typography> <Typography variant = "subtitle2"> {item.colletcionCensoredName} </Typography> </CardContent> <CardActions> - <IconButton onClick = {toggleFavorite(item.collectionName)}> + <IconButton onClick = {toggleFavorite(item.collectionId, item.collectionCensoredName)}> {(likes[item.collectionId] === true) ? <Favorite/> : <FavoriteBorder/>} </IconButton> </CardActions> diff --git a/src/SearchPage.js b/src/SearchPage.js index 2c4ab19..10dc1b3 100644 --- a/src/SearchPage.js +++ b/src/SearchPage.js @@ -1,6 +1,6 @@ import React from 'react'; +import MusicList from './MusicList.js'; import {Button, TextField} from '@mui/material'; -import MusicList from './MusicList'; export default function SearchPage ({list, onSearch}) { const [searchWord, setSearchWord] = React.useState(''); -- GitLab