[220609 / Day 26] json placeholder, aos ๋ผ์ด๋ธ๋ฌ๋ฆฌ
1. json placeholder
https://jsonplaceholder.typicode.com/
๋ฒ์ ๋ฐ์ดํฐ? : users - ๋๊ดํธ~๋๊ดํธ ๊น์ง ๋ณต์ฌ - ๋ฉ์ธ ํผ๋ ์์ userData.json ํ์ผ ๋ง๋ค๊ณ ๋ถ์ฌ๋ฃ๊ธฐ
- ์ด๋ค ๊ตฌ์กฐ๋ฅผ ๋ฆฌํดํด์ฃผ๋ ค๋ฉด ๋ณ๋ ฌ๊ตฌ์กฐ๋ก ํ์๊ตฌ์กฐ๋ก ๋ฆฌํดํด์ค์ผ ํจ div ์์ div ์ด๋ฐ ์์ผ๋ก
2. react03 ํด๋
์ปดํฌ๋ํธ ํ์ผ ์ด๋ฆ ์ฃผ๊ณ ๋ฐ์ jsx ํ์ผ ์ด๋ฆ์ index ๋ผ๊ณ ํด์ค๋ ๋จ
users.map(() => {}) → ์ํ ์ ๋ถ ์จ๋ ๋จ
{user.picture} → ๊ฐ์ ธ์ค๋ ค๋ฉด { } ๊ผญํ๊ธฐ
{user.online} → ์ด๊ฒ๋ง ํ๋ฉด ๊ทธ๋ฅ true false ๊ฐ๋ง ์ถ๋ ฅ๋จ ๋ฆฌํด ์์ ์ดํ ์ค์์น ๋ฌธ ์ฌ์ฉx ๋๋ฌธ์ ๊ทธ๋์ ์ผํญ ์ฐ์ฐ์๋ก ์จ๋ผ์ธ ์ ์ ์ true ๋ฉด ์ฝ๋ก ์ ๋ฌธ์ฅ์ผ๋ก, false ๋ฉด ์ฝ๋ก ๋ค ๋ฌธ์ฅ์ผ๋ก ๋ฐ์ ์ฒ๋ผ ์ ์ด์ค
→ {user.online ? <span className='online on'></span> : <span className='online off'>OFFLINE</span>}
- ์์ ์ปดํฌ๋ํธ์ ๋ฃ์ด์ฃผ๊ธฐ : app.js ์ <UserList /> ํด์ค์ผ index.jsx์ ๋ง๋ ๊ฒ ๋ค์ด๊ฐ
!!! js ๋ฌธ๋ฒ (๊น๋จน์ ๊น๋ด ๋ค์ ์ค๋ช ) object-ex.js !!!
3. for in๋ฌธ
์ฆ๊ฐ์ ํ์ง ์์๋ ์๊ธฐ๊ฐ ์์์ ์ฆ๊ฐํจ
๊ทธ๋์ ์ํํ๊ณ ์ถ์ ๋ ์ฌ์ฉ
!!! object-ex3.js
๋ค์ ์ดํดํ๊ณ ์ ๋ฆฌํ์ !!!
em ์ ์ดํค๋ฆญ์ฒด ๊ฐ์กฐ
4. MovieList ์ index.jsx ๋ฐ๋ณต์ผ๋ก ๋ค์ด๊ฐ ๊ตฌ์กฐ ๋จผ์ ๋ง๋ค์ด ๋๊ธฐ
const MovieList = () => {
const movieList = movieData;
return (
<div>
<ul className='move-list'>
<li>
<div className='imgbox'>
<img src="" alt="" />
<span className='grageinfo'>12</span>
<div className='dimmed'> // hover ํ์ ๋ dim ๋์ค๊ฒ
<a href="#"> ์๋งคํ๊ธฐ </a>
<a href="#"> ์์ธ์ ๋ณด </a>
</div>
</div>
<div className='txtbox'>
<div className='title'> ์ ๋ชฉ </div>
<div className='info'>
<span>์๋งค์จ <strong className='rateinfo'>0.1</strong> %</span>
<span>โ
<strong className='starinfo'>8.9</strong></span>
</div>
</div>
</li>
</ul>
</div>
);
};
export default MovieList;
5. aos ๋ผ์ด๋ธ๋ฌ๋ฆฌ
CDN SOURCES ์ css, js ์ฝ๋๋ค head ์์ ๋ถ์ฌ๋ฃ๊ธฐ ํ๊ณ ์ด๊ธฐํ ํด์ฃผ๊ณ ์์ ํด๋น ๋ฐ์ค๋ค ๋ณต์ฌ ๋ถ์ฌ๋ฃ๊ธฐ๋ง ํด์ฃผ๋ฉด ์ ์ฉ๊ฐ๋ฅ
๊นํ ๊ฐ๋ฉด anchor ๋ผ๋ ๋ฐ๋ชจ ํ์ด์ง๋ ์์ผ๋ ๋ณด๊ณ ์ ์ฉํ๋ฉด ๋จ, ์ด๋ค ์ต์ ์ด ์๋์ง๋ ๋ณด๊ธฐ ๊ฐ๋ฅ
์ต์ ์ ์ด๊ธฐํ์ ์๊ดํธ ์์ ์ค๊ดํธ ๋ง๋ค๊ณ ๊ฐ ์ต์ ์ ์ด์ฃผ๋ฉด ๋จ
๊ฐ๋จํ๊ฒ ์ด์ฉ๊ฐ๋ฅ
ํํ๋ฐ๋ฌผ๊ด ํํ์ด์ง ์ฌ๋ผ์ด๋ ์ ๋์์์ผ๋ ํ๋ฒ ๋ณผ ๊ฒ
!๊ถ๊ธํ ์ !
1. movieList.map((movie) => { } ๏ ์๊ดํธ ์์ movie ๋ ๋ฌด์จ ์๋ฏธ ์ธ์ง?
A) ์์์ MovieList๋ผ๋ ๋ณ์์ movieData๋ฅผ ๊ฐ์ ธ์์ movieList.map์ ๊ฐ ๋ฐ์ดํฐ์ movie๋ผ๋ ๋ณ์๋ฅผ ์ง์ด๋ฃ์ด์ movie ๋ ๊ฐ ํ๋ํ๋์ ์ ๋ณด๋ฅผ ๋ปํจ, ๋ฐ๋ผ์ movie.grade ๋ ๊ฒฐ๊ตญ ๊ฐ movieData์ grade ๋ผ๋ ์ ๋ณด๋ฅผ ๋ปํ๋ ๊ฒ
2. <li className='move-list-li' key={movie.id}> ๏ key ๊ฐ์ ์ ๊ผญ ์ค์ผ ํ๋์ง?
A) ์ด๋ค ๊ฑธ ์ถ๊ฐ๋ก ๋ฃ์ผ๋ฉด js๋ ์ ํ์ด์ง๋ฅผ ๋ถ๋ฌ์ ๊ทธ๋ ค ๋ฃ๋ ์์ผ๋ก ํ๋ค๋ฉด react ๋ ๊ฐ์ ๋์ผ๋ก ๊ธฐ์กด ํ์ด์ง์ ์ถ๊ฐ๋ก ๊ทธ๋ ค ๋ฃ๋ ์์ ๊ทธ๋์ ๋ ๊ฐ์ li ๋ฅผ ๋ฃ๋๋ค๊ณ ํด๋ id์ ๊ฐ์ ๊ฐ๊ฐ ๋ค๋ฅธ ๋ ๋ฆฝ์ ์ธ ๊ฐ์ฒด๋ก ๋ฃ์ด์ค์ผ ํ๊ธฐ ๋๋ฌธ์ key ๊ฐ์ด ํ์ํจ
3. e.target ์ ๋ฌด์?
A) ๋ถ๋ชจ๋ก๋ถํฐ ์ด๋ฒคํธ๊ฐ ์์๋์ด ๋ฐ์ํ๋ ์์์ ์์น, ๋ด๊ฐ ํด๋ฆญํ ์์ ์์๋ฅผ ๋ฐํ
๋ด์ผ์ ์ปดํฌ๋ํธ ์์ฒด๋ฅผ ๋ฐ๋ณตํด๋ณผ ๊ฒ์
๊ณผ์ ! : sns์ ๋์ ์น๊ตฌ๋ค๋ง ๋ฐ๋ณต์์ผฐ์ง๋ง ๋ฉ์ธ ํผ๋๋ค๋ ๋ฐ๋ณตํด๋ณผ ๊ฒ / ๋ฉ์ธ ํผ๋ ๋ฐ๋ ๋ด์ฉ์ ์ ์ด์จ์์ฑ๊ธฐ๋ก post ๋ comment ๋ค ๋ฐ๋ณต