ํฐ์คํ ๋ฆฌ ๋ทฐ
https://unsplash.com/documentation#get-a-random-photo
๋ค์๊ณผ ๊ฐ์ด API๋ฅผ ํตํด ์ด๋ฏธ์ง๋ฅผ Unsplash ์ฌ์ดํธ์์ ๋๋ค์ผ๋ก ๊ฐ์ ธ์ค๊ณ , ํด๋น ์ด๋ฏธ์ง๋ฅผ ํด๋ฆญํ์์ ๊ฒฝ์ฐ ์ด๋ฏธ์ง ๊ด๋ จ ์ ๋ณด๋ค์ด ๋ด๊ธด
ํ์ ์ฐฝ์ผ๋ก ํ๋ฉด ์์ ๋์ฐ๋๋ก ์ฝ๋๋ฅผ ๊ตฌํํ์๋ค.
for(let i = 0; i < data.length; i++) {
imageLists.innerHTML += `
<li class="image-list"
data-user=${data[i].user}
data-image=${data[i].urls.full}
>
<img src=${data[i].urls.full} alt=${data[i].alt_description}>
</li>
`
}
์ด๋ฏธ์ง ์์๋ฅผ ํด๋ฆญํ์์ ๋ JS์์ ๋์ ์ผ๋ก ์์ฑํด๋ ํด๋น ์ด๋ฏธ์ง ์์์ ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ํ ๋๋ก ํ์ ์ฐฝ์ ๋ด์ฉ์ ๊ตฌ์ฑํ๋ ค๊ณ ํ์์ผ๋
๋ฐ์ดํฐ ๋ด์ user ํ๋กํผํฐ๋ ๊ฐ์ฒด์๊ณ ํด๋น ๊ฐ์ฒด๋ฅผ ๋ฌธ์์ด ํํ๋ก ๋งํฌ์ ์ ์ ์ฅํ๋ค ๋ณด๋, ์คํฌ๋ฆฝํธ ์์์ ์ฌ์ฉํ ์ ์๋ ๊ฐ์ฒด ํ์์ด
์๋ Object ๋ฌธ์ ๊ทธ ์์ฒด๋ก ์ ์ฅ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์๋ค.
ํด๊ฒฐ
for(const img of imgs) {
const {urls, alt_description, user} = img;
const {name, instagram_username, profile_image: {medium}} = user;
const li = document.createElement('li');
li.classList.add('image-list');
li.dataset.user = JSON.stringify({name, instagram_username, medium});
li.dataset.image = `${urls.regular}`;
li.innerHTML = `<img src="${urls.regular}" alt="${alt_description}">`;
imageLists.appendChild(li);
li.addEventListener('click', function() {
const obj = {
image: this.dataset.image,
...JSON.parse(this.dataset.user)
}
modal.classList.add('active');
thumbnail.src = obj.image;
profileImg.src = obj.medium;
userName.textContent = obj.name;
insta.textContent = obj.instagram_username;
})
}
์์์ ์ดํธ๋ฆฌ๋ทฐํธ์ ๊ฐ์ฒด๋ฅผ ๋ฐ์ธ๋ฉํ๊ธฐ ์ํด์ ์ฝ๋๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์์ ํ์๋ค.
- fetchํ data์ ํ๋กํผํฐ๊ฐ ๋ง๊ฑฐ๋ ์ค์ฒฉ ๊ฐ์ฒด์ผ ๊ฒฝ์ฐ์๋ ๋์คํธ๋ญ์ณ๋ง ํ ๋น์ ์ฌ์ฉํ์ฌ ๋ณ์ํํ์ฌ ์๋ณ๋๋๋ก ํ๋ค.
- ์ดํธ๋ฆฌ๋ทฐํธ์ ํฅํ ์ฐธ์กฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฌํ๊ณ ์ถ์ ๊ฒฝ์ฐ์๋ HTMLElement.dataset์ ์ฌ์ฉํ๋ค.
- ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๊ณ ์๋ฒ๋ก ๊ฐ์ฒด๋ฅผ ์ ์กํ๋ ค๋ฉด ๊ฐ์ฒด๋ฅผ ๋ฌธ์์ดํํด์ผ ๋๋ค. ์ด๋ฅผ ์ํด JSON.stringify ๋ฉ์๋๋ฅผ ํตํด ๊ฐ์ฒด๋ฅผ JSON ํฌ๋งท์ ๋ฌธ์์ด๋ก ๋ณํํ๋ ์ง๋ ฌํ ๊ณผ์ ์ด ํ์ํ๋ค.
- ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ํด๋ผ์ด์ธํธ์์ ์ดํธ๋ฆฌ๋ทฐํธ dataset์ ์ ์ฅ๋์ด ์๋ ๊ฐ์ฒด๋ฅผ ์ ์กํ๋๋ฐ, ์ด๋ ์ ์ก๋ JSON ๋ฐ์ดํฐ๋ ๋ฌธ์์ด์ด๋ค. ์ด ๋ฌธ์์ด์ ๊ฐ์ฒด๋ก์ ์ฌ์ฉํ๋ ค๋ฉด JSON.parse ๋ฉ์๋๋ฅผ ํตํด ๋ฌธ์์ด์ ๊ฐ์ฒดํํ๋ ์ญ์ง๋ ฌํ ๊ณผ์ ์ด ํ์ํ๋ค.
'JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์คํฌ๋กค ์ค์ ์์น ๊ณ์ฐ_๋์ ๋ณด์ด์ง ์๋ ๋ฒ์ (0) | 2021.07.26 |
---|---|
์ด๋ฒคํธ ํธ๋ค๋ฌ this ๋ฐ์ธ๋ฉ ๋ฌธ์ (0) | 2021.07.25 |
์คํฌ๋กค ์์น ๊ฐ์ ธ์ค๊ธฐ (0) | 2021.07.23 |
ํด๋์ค๋ ์์ด๋ ๊ฐ์ด ์๋ Element ๊ฐ์ ธ์ฌ ๋ ๋ฌธ์ (0) | 2021.07.22 |
getPropertyValue์ ๋ฐํ๊ฐ (0) | 2021.07.20 |