[211011]
10์์ ์ฒ์์ผ๋ก ๋ฌด์ธ๊ฐ๋ฅผ ๋ง๋ค์ด๋ณด๋ฉด์ ๊ฐ๋ตํ๊ฒ ์ ์๋ ๊ธฐ๋ก๋ค์ด๋ค. ํฐ์คํ ๋ฆฌ ๋ธ๋ก๊ทธ๋ฅผ ๊ฐ์คํ๋ฉด์ ๊ทธ๋๋ก ์ฎ๊ธด ๊ธ. ์ด๋๋ ์ด์ฌํ ์ข ์ธ๊ฑธ ๊ทธ๋ฌ๋ค.
๋ฐฐ๊ฒฝ ์์ / ํ๊ณผ ์ด์ ์ / ์จ๋ฒ ๊ฐ ๊ฐ๊ฒฉ๊ณผ ํ ๋๋ฆฌ์ ๋๊ป ๋ฅผ ์ ํ ์ ์๋ค.
context api๋ฅผ ์ด์ฉํด ์ํ๋ฅผ ๊ด๋ฆฌํ๊ณ ์๋ค.
์์ API
์จ๋ฒ์ํธ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ค๋๋ฐ๋ last.fm์ api๋ฅผ ์ฌ์ฉํ๋ค.
์ ํ๋ธ์์ ํฌ๋กค๋งํด์์ ๋ง๋ ๋ฐ์ดํฐ๋ค์ด๋ผ๊ณ ํ๋ค.
๊ฒ์ํ ๊ฒฐ๊ณผ๋ค์ด ๋ ์ค๋ก ๊ฐ๋ก๋ก ๋ณด์ฌ์ง๋ค. ๋๋๊ทธ์ค ๋๋์ผ๋ก ํ์คํฐ์ ์ฎ๊ฒจ ๋ฐฐ์นํ ์ ์๋ค.
last.fm api์์ ๋ถ๋ฌ์จ ์จ๋ฒ์ํธ ์ด๋ฏธ์ง๋ค์ด ์ค์ ์ ๋ค๋ฅด๊ฑฐ๋ ์๋ ๊ฒ๋ค์ด ๊ฝค ์์๋ค.
ํ์ฌ๋ Spotify api๋ก ๋ฐ๊พธ์๋ค. Spotipy ๋ผ๋ ํ์ด์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํด์ ๋ฐฑ์๋์์ ๋ฐ์์ ํ๋ก ํธ๋ก ๋๊ฒจ์ค๋ค.
๋๋๊ทธ ์ค ๋๋
๋๋๊ทธ์ค ๋๋์ผ๋ก ํ์ผ์ ๋ณด๋ผ ๋ dataTransfer
๋ฉ์๋๋ฅผ ์ด์ฉํ๋ค. ์ฐธ๊ณ
๋๋๊ทธ ์ค์ ๋ค๋ฅธ ํ์ผ ์๋ก ์ง๋๊ฐ ๋์ ์ ๋๋ฉ์ด์
์ ์ํด onDragEnter
์ onDragLeave
์ด๋ฒคํธ์ ๋ํ ํธ๋ค๋ฌ๋ ๋ง๋ค์ด์ฃผ์๋ค.
export const handleDragStart = (e, title) => {
console.log("drag start");
let cardImg = e.target.style.backgroundImage;
let albumTitle = e.target.id;
console.log(albumTitle);
e.dataTransfer.setData("card_img", cardImg);
e.dataTransfer.setData("album_Title", albumTitle);
};
export const handleDragOver = (e) => {
e.preventDefault(); //์ด๊ฑธ ํด์ผ ๋๋กญ์ด ๋๋ค!!
};
export const handleDragEnter = (e) => {
let dragNode = e.target.parentNode;
dragNode.id = "dragover";
};
export const handleDragLeave = (e) => {
let dragNode = e.target.parentNode;
dragNode.id = "";
};
export const handleDrop = (e) => {
let dragNode = e.target.parentNode;
dragNode.id = "";
const card_img = e.dataTransfer.getData("card_img");
const album_Title = e.dataTransfer.getData("album_Title");
e.target.style.backgroundImage = card_img;
e.target.id = album_Title;
};