1. Styled ComponentsStyled Components๋ CSS-in-JS ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋๋ก, ์คํ์ผ์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ ์์ ์์ฑํ๊ณ , ์ปดํฌ๋ํธ ๋จ์๋ก ์บก์ํํ ์ ์๋ค.์ฅ์ ๐์๋ ์ต์ ํ: ๋ถํ์ํ ํด๋์ค ์์ฑ์ด๋ ์ค๋ณต๋ ์คํ์ผ ์ ๊ฑฐ ๋ฑ ์ต์ ํ๊ฐ ์๋์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.๋์ ์คํ์ผ๋ง: Prop์ ๋ฐ๋ผ ๋์ ์ผ๋ก ์คํ์ผ์ ๋ณ๊ฒฝํ ์ ์๋ค.CSS์ ๋ฒ์: CSS๊ฐ ์ปดํฌ๋ํธ ๋จ์๋ก ์บก์ํ๋์ด ์ ์ญ ๋ค์์คํ์ด์ค ์ถฉ๋ ๋ฌธ์ ๊ฐ ์๋ค.๋จ์ ๐๋ฐํ์ ์ฑ๋ฅ ์ ํ: Styled Components๋ ์คํ์ผ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋ฐํ์ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น ์ ์๋ค. ํนํ ๋ง์ ์ปดํฌ๋ํธ๊ฐ ์์ ๊ฒฝ์ฐ ์คํ์ผ์ ๊ณ์ฐํ๊ณ ์ ์ฉํ๋ ์๊ฐ์ด ์ฆ๊ฐํ ์ ์๋ค.ํจํค์ง ํฌ๊ธฐ ์ฆ๊ฐ: ์ถ๊ฐ์ ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํจํด์ผ..
๋ธ๋ผ์ฐ์ ์ ๊ฒฝ์ฐ setTimeout ์ ์๋ก ๋ค๋ฉด, Call Stack์์ Web API setTimeout ์์ฒญ ์ดํ ์ ๊ฑฐ๋ฉ๋๋ค.Web API์์ setTimeout ์ด ์๋ฃ๋๋ฉด setTimeout callback ํจ์๋ฅผ Callback Queue(์๋ฃ๊ตฌ์กฐ์ queue์ฒ๋ผ ๊ตฌํ๋ ์ ์ฅ์, ์ธ๋ถํ๋ queue๋ค์ด ์์)๋ก ์ฎ๊น๋๋ค.ํ์ฌ ์คํํ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ๋ชจ๋ ์คํํ ๋ค, Event Loop๊ฐ ์ง์์ ์ผ๋ก Call Stack์ด ๋น์ด์๋์ง ํ์ธํ๊ณ , ๋น์ด์๋ค๋ฉด Callback Queue์ ์๋ ์์
์์๋๋ก Call Stack์ผ๋ก ๋๊ฒจ ์คํํ๋๋ก ๋ง๋ญ๋๋ค.
Scssnav { ul { margin: 0; padding: 0; list-style: none; } li { display: inline-block; } a { display: block; padding: 6px 12px; text-decoration: none; }}CSSnav ul { margin: 0; padding: 0; list-style: none;}nav li { display: inline-block;}nav a { display: block; padding: 6px 12px; text-decoration: none;}๋ฏน์ค์ธ ์์Scss@mixin theme($theme: DarkGray) { background: $theme; ..
1. PromisePromise๋ ๋น๋๊ธฐ ์์
์ ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋ด๋ ๊ฐ์ฒด์
๋๋ค. ๋น๋๊ธฐ ์์
์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋๋ฉด ๊ฒฐ๊ณผ๊ฐ์ ์ ๊ณตํ๊ฑฐ๋, ์คํจํ๋ฉด ์๋ฌ๋ฅผ ๋ฐํํฉ๋๋ค.์ฃผ์ ํน์ง์ํ: Pending (๋๊ธฐ), Fulfilled (์ดํ), Rejected (๊ฑฐ๋ถ) ์ธ ๊ฐ์ง ์ํ๋ฅผ ๊ฐ์ง๋๋ค.๋ฉ์๋: then, catch, finally ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.const fetchData = () => { return new Promise((resolve, reject) => { setTimeout(() => { resolve("๋ฐ์ดํฐ ์์ ์๋ฃ"); }, 1000); });};fetchData().then(result => { console.log(result); // "๋ฐ์ดํฐ ..
1๏ธโฃ ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฝ๋ฐฑ(์ฝ๋ฐฑ ํจ์)์ด ๋ฌด์์ธ์ง ์ค๋ช
ํด ์ฃผ์ธ์.๐ท๏ธ ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฝ๋ฐฑ ํจ์๋ ๋ค๋ฅธ ํจ์์ ์ธ์๋ก ์ ๋ฌ๋์ด, ํด๋น ํจ์๊ฐ ์์
์ ์๋ฃํ ํ ํธ์ถ๋๋ "๋์ค์ ํธ์ถ๋ ํจ์"์
๋๋ค.// ๊ฐ ๋ฐฐ์ด์ ์์์ ์ฝ๋ฐฑ ํจ์๋ฅผ ํธ์ถconst numbers = [1,2,3,4,5];numbers.forEach((number)=> console.log(number));์ฝ๋ฐฑ ํจ์์ ๋ฌธ์ ์ ๋ง์ ์ฝ๋ฐฑ ํจ์๊ฐ ์ค์ฒฉ๋๋ฉด ์ฝ๋๊ฐ ๋ณต์กํ๊ณ ๊ฐ๋
์ฑ์ด ๋จ์ด์ง๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด 'Promise', 'async/await'๊ณผ ๊ฐ์ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ด ์ฌ์ฉ๋ฉ๋๋ค.2๏ธโฃ ๋ฐฐ์ด์ ์๋ filter, map๊ณผ ๊ฐ์ ๋ฉ์๋์ ์๋ ์ฝ๋ฐฑ๊ณผ setTimeout์ ์๋ ์ฝ๋ฐฑ์ ์ฐจ์ด์ ๋ํด ์ค๋ช
ํด ์ฃผ์ธ์.๐ท๏ธ filter๋ ..
๐ช ๋จผ์ ์์์ผํ ๊ฐ๋
์ปดํฌ๋ํธ ์ธ๋ง์ดํธ๋ ?์ปดํฌ๋ํธ ์ธ๋ง์ดํธ(Unmount)๋ React ์ปดํฌ๋ํธ๊ฐ DOM์์ ์ ๊ฑฐ๋๋ ์ํ๋ฅผ ์๋ฏธํฉ๋๋ค. ์ฆ, ์ปดํฌ๋ํธ๊ฐ ํ๋ฉด์์ ์ฌ๋ผ์ง๊ฑฐ๋ ๋ ์ด์ ํ์ ์์ ๋ ๋ฐ์ํฉ๋๋ค.์ผ๋ฐ์ ์ผ๋ก ์ปดํฌ๋ํธ๊ฐ ์ธ๋ง์ดํธ๋๋ ๊ฒฝ์ฐ ๐ญ์ฌ์ฉ์๊ฐ ํ์ด์ง๋ฅผ ์ด๋ํ ๋์กฐ๊ฑด๋ถ ๋ ๋๋ง์ ํตํด ์ปดํฌ๋ํธ๊ฐ ์จ๊ฒจ์ง๊ฑฐ๋ ์ ๊ฑฐ๋ ๋๋ถ๋ชจ ์ปดํฌ๋ํธ๊ฐ ์ธ๋ง์ดํธ๋ ๋ ์ด๋ฒคํธ ๋ฆฌ์ค๋์ ํด๋ฆฐ์
์ด๋ฒคํธ ๋ฆฌ์ค๋๋ ๋ธ๋ผ์ฐ์ ์์ ํน์ ์ด๋ฒคํธ(์: ํด๋ฆญ, ๋ฆฌ์ฌ์ด์ฆ, ์
๋ ฅ ๋ฑ)๊ฐ ๋ฐ์ํ ๋ ํธ์ถ๋๋ ํจ์์
๋๋ค. ์๋ฅผ ๋ค์ด, window.addEventListener('resize', handleResize)๋ ๋ธ๋ผ์ฐ์ ์ฐฝ์ ํฌ๊ธฐ๊ฐ ์กฐ์ ๋ ๋๋ง๋ค handleResize ํจ์๋ฅผ ํธ์ถํฉ๋๋ค. ์ ํด๋ฆฐ์
์ด ํ์ํ๊ฐ?์ปดํฌ๋ํธ๊ฐ ์ธ๋ง์ดํธ..