John Ahn๋์ ์ธํ๋ฐ ๊ฐ์๋ฅผ ๋ฐ๋ผ๊ฐ๋ฉด์ ์งํ์ค์ ๋๋ค.
๊ฐ์ธ ๊ณต๋ถ ์ฉ๋๋ก ๊ธฐ๋กํฉ๋๋ค. ๋ฌธ์ ์ ์ญ์
https://xxilliant.tistory.com/73
1. ์งํ ์ฌํญ (ํ ํฌ์คํ ๊ธฐ์ค)
์ํ grid card ์ปดํฌ๋ํธ ๋ง๋ค๊ธฐ
2. ES7
vs code์์ ES7 ๋ค์ด๋ฐ๊ณ ๋์
๋น js ํ์ผ์์ rfce ๋ผ๊ณ ์น๊ณ ์ํฐ ๋๋ฅด๋ฉด ์๋์ ๊ฐ์ ๊ธฐ๋ณธ ํจ์ ํ์ด ์ง์-ํ๊ณ ๋์จ๋ค
3. ๊ธฐ์ตํ ๋ด์ฉ
1) ant design : Col ํ์ฉ
<Col span = {8} /> ์์ span์ ํญ๋ชฉ ํ๋๊ฐ 24๋ถํ ์ค์ ์ผ๋ง๋ ์ฐจ์งํ ์ง์ ๋ํ ๋น์จ์ด๋ค.
lg={6} -> ํ๋ฉด ์ฐฝ ํฌ๊ธฐ๊ฐ large์ผ ๋ ํ๋๋น 6, ์ด 4๊ฐ ํญ๋ชฉ์ด ํ์ค์ ๋ํ๋๋ค.
md={8} -> midium์ผ ๋ ํ๋๋น 8์ ์ฐจ์ง, ์ด 3๊ฐ ํญ๋ชฉ์ด ํ์ค์ ๋ํ๋๋ค
xs={24} -> small์ผ ๋ ํ ์ค์ ํ๋๋ง ๋ํ๋๋ค.
2) ant design : Row ํ์ฉ
๊ทธ๋ฆฌ๊ณ ์์ ๊ฐ์ด Row๋ก๋ ํ ํ์ ๋ง๋ค ์ ์๋ค.
ํญ๋ชฉ ๊ฐ์ ์ฌ๋ฐฑ์ ์ํด์๋ ์๋์ ๊ฐ์ด gutter = {[์ข์ฐ์ฌ๋ฐฑ, ์ํ์ฌ๋ฐฑ]} ์ ์ถ๊ฐํด์ฃผ๋ฉด ๋๋ค
<Row gutter={[60, 16]}>
3. map
๊ทธ๋ฆฌ๊ณ map(๋ฐ๋ณต๋ฌธ)์ ์ฌ์ฉํด์ ์ํ ์ ๋ณด ๋ฆฌ์คํธ๋ฅผ ๋ถ๋ฌ์จ๋ค.
๋ญ์ผ ์์๋ผ
์๊ณ ๋ณด๋ setMovies() ๋ถ๋ถ์์ ๋ฐฐ์ด์ ๋ณต์ฌํ๋ ๊ฐฑ์ (?)์ ํด์ค์ผํ๋๋ฐ
๊ทธ๋ฅ ([response.results]) ๋ก ๋์ด์์ด์ ๋ฆฌ์คํธ๊ฐ ์ ๋์ค๋ ๊ฑฐ์์
setMovies( [...response.results] ) ๋ก ๊ณ ์ณ์ฃผ์๋๋ ํด๊ฒฐ๋์๋ค!
๊ทผ๋ฐ ์ด๊ฑฐ ๋ฒ๊ทธ์ธ์ง ๋ชจ๋ฅด๊ฒ ๋๋ฐ
setMovies( ...[response.results] ) ์ด๋ ๊ฒ ํด๋ ์ ์์๋์ด ๋๋ค. ๋ญ๊ฐ ๋ค๋ฅธ๊ฑฐ์ง
๋์ค์ ์จ๋ฐฐ๋ฆผํํ ์ฌ์ญค๋ด์ผ๊ฒ ๋ค.
+
GPTํํ ๋ฌผ์ด๋ณด๋๊น ์ ๋ฐฐ์ด ์ฐธ์กฐ๋ฅผ ์์ฑํ๋, ํ์ง ์๋๋์ ์ฐจ์ด๋ผ๊ณ ํ๋ค.
React์์ "setMovies([...response.results])" ๋ฐ "setMovies(...[response.results])"๋ useState ํํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ ์์์ ์ํ๋ฅผ ์ค์ ํ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋๋ค.
์ฒซ ๋ฒ์งธ ๊ตฌ๋ฌธ์ธ "setMovies([...response.results])"๋ ์คํ๋ ๋ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ "response.results" ๋ฐฐ์ด์์ ์ ๋ฐฐ์ด์ ๋ง๋ ๋ค์ ํด๋น ์ ๋ฐฐ์ด์ "setMovies"์ ์ธ์๋ก ์ ๋ฌํฉ๋๋ค. ์ด ๊ตฌ๋ฌธ์ ๋ฐฐ์ด์ ๋ด์ฉ์ด ์ด์ ์ํ์ ๋์ผํ ๊ฒฝ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ๋ฐฐ์ด ์ฐธ์กฐ๋ฅผ ์์ฑํฉ๋๋ค. ์ด๋ ๋ฐฐ์ด ๋ด์ฉ์ด ์ค์ ๋ก ๋ณ๊ฒฝ๋์ง ์์ ๊ฒฝ์ฐ์๋ ๊ตฌ์ฑ ์์๋ฅผ ๊ฐ์ ๋ก ๋ค์ ๋ ๋๋งํ๋ ค๋ ๊ฒฝ์ฐ ์ ์ฉํฉ๋๋ค. React๋ ์ฐธ์กฐ๋ฅผ ๋น๊ตํ๊ณ ์๋ก ๋ค๋ฅธ์ง ํ์ธํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ ๋ฒ์งธ ๊ตฌ๋ฌธ "setMovies(...[response.results])"๋ ์ ๊ฐ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ "response.results" ๋ฐฐ์ด์์ ์ ๋ฐฐ์ด์ ๋ง๋ ๋ค์ ํด๋น ๋ฐฐ์ด์ ์์๋ฅผ " setMovies"์ ์ธ์๋ก ์ ๋ฌํฉ๋๋ค. ์ด ๊ตฌ๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๋ฐฐ์ด ์ฐธ์กฐ๋ฅผ ๋ง๋ค์ง ์๊ณ ๋ฐฐ์ด์ ์์๋ฅผ "setMovies" ํจ์์ ๋ณ๋์ ์ธ์๋ก ์ง์ ์ ๋ฌํฉ๋๋ค. ์ด๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋๊ณผ ๊ฐ๋น์ง ์์ง ์ค๋ฒํค๋๋ฅผ ์ค์ฌ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๋ฐฐ์ด ์ฐธ์กฐ๋ฅผ ๋ง๋ค์ง ์์ผ๋ ค๋ ๊ฒฝ์ฐ, ํนํ ๋ฐฐ์ด์ด ํฐ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค.
๋ ๊ตฌ๋ฌธ ๋ชจ๋ "movies" ๋ณ์์ ์ํ๋ฅผ "response.results" ๋ฐฐ์ด๋ก ์ค์ ํ๋ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ต๋๋ค. ๊ทธ๋ค ์ฌ์ด์ ์ฐจ์ด์ ์ ๋ฐฐ์ด์ ์์ฑํ๊ณ "setMovies" ํจ์์ ๋ํ ์ธ์๋ก ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ด๋ฉฐ ์ฑ๋ฅ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๋ฏธ์น๋ ์ํฅ์ ๋ฐฐ์ด์ ํฌ๊ธฐ์ ๋ณต์ก์ฑ ๋ฐ ์ํ ์ ๋ฐ์ดํธ ๋น๋์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
4. ๊ฒฐ๊ณผ๋ฌผ
๊ทธ๋ฐ๋ฐ ์ฐฝ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๋ฉด ์ฌ์ง ๋น์จ์ด ์๋ง์ด ๋๋ค.
์ฌ์ง ๋น์จ ๊ณ ์ ํ๋ ๋ฐฉ๋ฒ์ ๋์ค์ ์ฐพ์๋ด์ผ๊ฒ ๋ค..
'๐ฉโ๐ป ๊ฐ๋ฐ ๊ณต๋ถ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] TypeError: Cannot read properties of undefined (reading 'prototype') (0) | 2023.03.25 |
---|---|
[React] Movie App ๋ง๋ค๊ธฐ (๊ฐ์ธ ํ๋ก์ ํธ) - 3 (0) | 2023.02.20 |
[React] npm ERR! code ELIFECYCLE errno 1 (0) | 2023.02.20 |
[React] Movie App ๋ง๋ค๊ธฐ (๊ฐ์ธ ํ๋ก์ ํธ) - 1 (0) | 2023.02.20 |
[React] Attempted import error: does not contain a default export (0) | 2023.02.20 |