ํด์ฑ์ ํด์ ํจ์์ ๋ฌธ์์ด ์๋ ฅ ๊ฐ์ ๋ฃ์ด โ ํ์ ํ ๊ฐ์ผ๋ก ์ถ์ถํ๋ ๊ฒ์ ๋งํ๋ค.๋จผ์ Map(๋งต)์ ํค(Key)์ ๊ฐ(Value)๋ก ๊ตฌ์ฑ๋ Entry ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋งํ๋ค.์ฌ๊ธฐ์ ํค์ ๊ฐ์ ๋ชจ๋ ๊ฐ์ฒด์ด๋ฉฐ, ํค๋ ๋งต์์ ์ ์ผํด์ผ ํ๋ฉฐ, ๊ฐ์ ์ค๋ณต์ด ํ์ฉ๋๋ค
ํ๋ก๊ทธ๋๋จธ์ค ๋ฌธ์ ๋ฅผ ํ๊ณ , ๋ค๋ฅธ ์ฌ๋ ํ์ด๋ฅผ ํ์ธํ๋ค๋ณด๋ ?? ์ฐ์ฐ์๋ฅผ ์๊ฒ ๋์๋ค. ์ธ๋ฏ๋ณด๋ฉด ์ผํญ ์ฐ์ฐ์ ? :์ ๋น์ทํ์ง๋ง null ํ ๋น ์ฐ์ฐ์๋ ?? ๋ฌผ์ํ๊ฐ ๋๊ฐ์ด๋ค.๊ทธ๋ ๋ค๋ฉด null ํ ๋น ์ฐ์ฐ์๋ ๋ฌด์์ผ๊น ?๋ ผ๋ฆฌ null ํ ๋น ์ฐ์ฐ์๋ผ๊ณ ๋ ํ๋ null ๋ณํฉ
์๋ฐ์คํฌ๋ฆฝํธ์์ attribute์ property ๋ชจ๋ ์์ฑ์ ์๋ฏธํ์ง๋ง, ์กด์ฌํ๋ ์์น, ๊ฐ์ ๋ถ๋ณ์ฑ์ ๋ํ ์ฐจ์ด์ ์ด ์กด์ฌํฉ๋๋ค.์๋ฅผ ๋ค์ด, value ๊ฐ์ด โ๊ธฐ๋ณธ๊ฐโ์ธ input ์์๊ฐ ์๋ค ๊ฐ์ ํ ๋, ํด๋น input ์์๊ฐ html์ ์๋ค๋ฉด value๋ at
๊ฐ์ฒด, ๋ฐฐ์ด, ํจ์์ ๊ฐ์ ์ฐธ์กฐํ์ ์ ๋ฐ์ดํฐ๋ ๋ณต์ฌ ์ ๋ฐ์ดํฐ์ ๊ฐ์ด ์๋, ๊ฐ์ด ์ ์ฅ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๊ฐ ์ ์ฅ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ฐธ์กฐ ํ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์์ ๋ณต์ฌ์ ๊น์ ๋ณต์ฌ๋ก ๋๋ฉ๋๋ค.์์ ๋ณต์ฌ๋ ์ฐธ์กฐ ํ์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅํ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๊ฐ์ ๋ณต์ฌํ๋ ๊ฒ์
SOP์ ๋๋ถ๋ถ์ ์น ๋ธ๋ผ์ฐ์ ์์ ์ฑํํ๊ณ ์๋ ๋ณด์ ์ ์ฑ ์ผ๋ก, ๋ณด์์ ์ํด ํ๋กํ ์ฝ, ํธ์คํธ, ํฌํธ๊ฐ ๋์ผํ ์๋ฒ๋ก๋ง ๋ฐ์ดํฐ ์์ฒญ์ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ ์ ์ฑ ์ ๋งํฉ๋๋ค.SOP์ ์๊ฒฉํ ๋ณด์ ์ ์ฑ ์ผ๋ก ์ธ๋ถ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค์ง ๋ชปํ์ง๋ง, CSRF๋ XSS ์ ๊ฐ์ ๋ณด์ ์ทจ
ํ์ค DOM ์ด๋ฒคํธ์์ ์ ์ํ ์ด๋ฒคํธ ํ๋ฆ์ 3๋จ๊ณ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.์บก์ณ๋ง ๋จ๊ณ : ์ด๋ฒคํธ๊ฐ ํ์ ์์๋ก ์ ํ๋๋ ๋จ๊ณํ๊น ๋จ๊ณ : ์ด๋ฒคํธ๊ฐ ์ค์ ํ๊น ์์์ ์ ๋ฌ๋๋ ๋จ๊ณ๋ฒ๋ธ๋ง ๋จ๊ณ : ์ด๋ฒคํธ๊ฐ ์์ ์์๋ก ์ ํ๋๋ ๋จ๊ณ๋ฐ๋ผ์ <td> ๋ฅผ ํด๋ฆญํ๋ฉด์ด๋ฒคํธ๊ฐ ์ต
React์์ state์ props๋ ๋ ๋ค ์ปดํฌ๋ํธ์์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋๋ฐ ์ฌ์ฉ๋์ง๋ง, ๋ชฉ์ ๊ณผ ์ฌ์ฉ ๋ฐฉ๋ฒ์์ ์ฐจ์ด์ ์ด ์กด์ฌํฉ๋๋ค.state๋ ์ปดํฌ๋ํธ ๋ด๋ถ์์ ๊ด๋ฆฌ๋๋ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ๋ฐ์ดํฐ์ ๋๋ค. setState() ๋ฉ์๋ ๋๋ ํด๋์คํ ์ปดํฌ๋ํธ์์๋ this.sta
React์์ map ๋ฑ์ ์ฌ์ฉํด ์ปดํฌ๋ํธ๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์์ฑํ ๋, 'Warning: Each child in a list should have a unique "key" prop.โ ์ ๊ฐ์ ๊ฒฝ๊ณ ๋ฅผ ๋ง์ฃผ์น๊ฒ ๋ฉ๋๋ค.React ์ปดํฌ๋ํธ์์ ์ key ์์ฑ์ด ํ์ํ์ง
์๋ฒ์ชฝ์์ ๋ ๋๋ง ์ค๋น๋ฅผ ๋ชจ๋ ๋๋ง์น ์ํ๋ก ํด๋ผ์ด์ธํธ์ ์ ๋ฌํ๋ ๋ฐฉ์์ ๋๋ค.์ฌ์ฉ์๊ฐ ์น ์ฌ์ดํธ์ ์์ฒญ์ ๋ณด๋ ๋๋ค.Server๋ ์ฆ์ ๋ ๋๋ง ๊ฐ๋ฅํ HTML ํ์ผ์ ๋ง๋ญ๋๋ค.ํด๋ผ์ด์ธํธ์ ์ ๋ฌ๋ HTML์ ์ด๋ฏธ ๋ ๋๋ง ์ค๋น๊ฐ ๋์๊ธฐ ๋๋ฌธ์ ์ฆ์ ๋ ๋๋ง๋ฉ๋๋ค. ๋จ ์์ง ์ฌ
null์ ๊ฐ์ฒด ํํ์ ๋น ๊ฐ์ผ๋ก, ๊ฐ์ด ์๋ ๊ฒ์ ์๋์ ์ผ๋ก ๋ช ์ํ๊ธฐ ์ํด ์ฌ์ฉํฉ๋๋ค.undefined๋ ๋ณ์๋ฅผ ์ ์ธํ๊ณ ๊ฐ์ ํ ๋นํ๊ธฐ ์ด์ ์ ๊ฐ์ผ๋ก, ๋ณ์์ ๊ฐ์ด ํ ๋น๋์ง ์์ ์ํ๋ฅผ ๋งํฉ๋๋ค.๋ณ์๋ ๋ณ์ ์ ์ธ, ์ด๊ธฐํ, ํ ๋น์ 3๋จ๊ณ๋ฅผ ๊ฑฐ์ณ ์์ฑ๋๋๋ฐ, ์ด๋ ์๋ฐ
์์ํจ์๋ ํจ์ ํ๋ก๊ทธ๋๋ฐ์์ ์์ฃผ ์ฌ์ฉ๋๋ ๊ฐ๋ ์ผ๋ก, 2๊ฐ์ง ์กฐ๊ฑด์ ๋ชจ๋ ๋ง์กฑํ๋ ํจ์๋ฅผ ๋งํฉ๋๋ค.์ฒซ์งธ, ๊ฐ์ ์ ๋ ฅ ๊ฐ์ ๋ํด ํญ์ ๋์ผํ ์ถ๋ ฅ ๊ฐ์ ๋ฐํํ๋ ํจ์์ฌ์ผ ํฉ๋๋ค. ์์ ํจ์๋ ์ ๋ ฅ ๊ฐ์ด ๋ณ๊ฒฝ๋์ง ์๋ ํ ํญ์ ๊ฐ์ ๊ฒฐ๊ณผ ๊ฐ์ ๋ฐํํ๊ธฐ ๋๋ฌธ์ ๋ถ๋ณ์ฑ์ ์
ํ๐ก ํ์ ์ฉ์ดRender : DOM Tree๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด ๊ฐ ์๋ฆฌ๋จผํธ์ ์คํ์ผ ์์ฑ์ ๊ณ์ฐํ๋ ๊ณผ์ Paint : ์ค์ ์คํฌ๋ฆฐ์ Layout์ ํ์ํ๊ณ ์ ๋ฐ์ดํธํ๋ ๊ณผ์ useEffect์ ์ปดํฌ๋ํธ๋ค์ด render์ paint๋ ํ์ ์คํ๋๋ฉฐ, ๋น๋๊ธฐ์ ์ ๋๋ค.pai
์ด๋ค ์์ ์ ์ํด ์คํํ ์ ์๋ ํ์ผ๋ก, ์์ฑํ ์ฝ๋๋ฅผ ๋น๋ํ์ฌ ์์ฑ๋๋ ๊ฒฐ๊ณผ๋ฌผ์ ์๋ฏธํฉ๋๋ค.ํ๋ก๊ทธ๋จ์ ํ์ผ์ด ์ ์ฅ ์ฅ์น์ ์์ง๋ง ๋ฉ๋ชจ๋ฆฌ์๋ ์ฌ๋ผ๊ฐ ์์ง ์์ ์ ์ ์ธ ์ํ์ ๋๋ค.๋ฐ๋ผ์ ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ ์ํด์๋ Memory ์์์ ํ ๋น ๋ฐ์์ผ ํ๋ํ , ์ด๋ ์์์
์๋ ค์ง๋ค์ํผ, ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ฑ๊ธ ์ค๋ ๋ ์ธ์ด์ด๋ค. ๋จ์ํ ์๊ฐํด๋ณด๋ฉด ํ๋๋ณด๋ค๋ ์ฌ๋ฌ ์ค๋ ๋๋ก ์์ ํ๋ฉด ๋ ์ข์ง ์์๊น? ๋ผ๋ ์๊ฐ์ด ๋๋๋ฐ, ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ฑ๊ธ ์ค๋ ๋๋ฅผ ์ ํํ์๊น?์ฌ๊ธฐ์ ์ง๊ณ ๋์ด๊ฐ์ผํ ๊ฒ์ ๋ชจ๋ ๊ธฐ์ ์๋ ๊ฐ๊ฐ์ ๊ธฐํ ๋น์ฉ์ด ์กด์ฌํ๊ณ , ์ฑ๊ธ ์ค๋
๐ญ useCallback๊ณผ useMemo์ ์ฐจ์ด์ ์ ๋ํด ์์๋ณด๊ธฐ์ ์์, Memoization๊ณผ Re-rendering ๋ ๊ฐ๋ ์ ๋ํด ๊ฐ๋ตํ ์ดํด๋ณธ ํ ๋ณธ๊ฒฉ์ ์ผ๋ก ๋ ์ฐจ์ด์ ์ ๋ํด ์์๋ณด๋๋ก ํ์!์ปดํจํฐ ํ๋ก๊ทธ๋จ์ด ๋์ผํ ๊ณ์ฐ์ ๋ฐ๋ณตํด์ผ ํ ๋, ์ด์ ์ ๊ณ์ฐํ ๊ฐ
ES5์ ์ฒ์ ์ถ๊ฐ๋ ๊ฐ๋ ์ผ๋ก, ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋์ ๋์ฑ ์๊ฒฉํ ์ค๋ฅ ๊ฒ์ฌ๋ฅผ ์ ์ฉํ๋ ํค์๋์ ๋๋ค. ์คํฌ๋ฆฝํธ๋ ํจ์์ ๋งจ ์ฒ์์ โuse strictโ ์ง์์ด๋ฅผ ์ฌ์ฉํด ์ ์ธํ ์ ์์ต๋๋ค.์๊ฒฉ๋ชจ๋์์๋ ์ด์ ์ ํต์ฉ๋๋ ํ๋๋ค์ ์ ์ฝํฉ๋๋ค. ๋ํ ๋ช ๊ฐ์ง ์ค์ํ ๊ธฐ๋ฅ์
JavaScript XML(eXtensible Markup Language)์ ์ฝ์ด๋ก, JavaScript์ XML์ ์ถ๊ฐํ ํ์ฅ๋ ๋ฌธ๋ฒ์ ๋๋ค. ๋ฆฌ์กํธ ์ฌ์ฉ์ JSX๋ฅผ ์ด์ฉํด HTML๊ณผ JavaScript๋ฅผ ๋ชจ๋ ํฌํจํ๊ณ ์๋ ์ปดํฌ๋ํธ๋ฅผ ์์ฑํฉ๋๋ค.๋ณด๊ธฐ ์ฝ๊ณ ์ต์ํ๋ค.
Cross Browsing์ด๋ ํ์ค ์น ๊ธฐ์ ์ ์ฑ์ฉํ์ฌ ๋ค๋ฅธ ๊ธฐ์ข ํน์ ํ๋ซํผ์ ๋ฐ๋ผ ๋ฌ๋ฆฌ ๊ตฌํ๋๋ ๊ธฐ์ ์ ๋น์ทํ๊ฒ ๋ง๋ค์ด ์น ํ์ด์ง๋ฅผ ์ ์ํ๋ ๊ธฐ๋ฒ์ ๋งํ๋ ๊ฒ์ด๋ค.ํ๊ตญ์ํํธ์จ์ด์งํฅ์ ๊ณต๊ฐS W์ง์์ผํฐ ๋ฐ๊ฐํ โCross Browsing ๊ฐ์ด๋โ ์คํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง์
ํ์ดํ ํจ์๋ ES6์ ์๋กญ๊ฒ ์ถ๊ฐ๋ ๋ฌธ๋ฒ์ผ๋ก, ๊ธฐ์กด ํจ์ ํํ์์ ๋นํด ๊ฐ๋จํ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค. ๋ํ ํ์ดํ ํจ์๋ ์ต๋ช ํจ์๋ก๋ง ์ฌ์ฉํ ์ ์์ด, ํ์ดํ ํจ์๋ฅผ ํธ์ถํ๊ธฐ ์ํด ํจ์ ํํ์์ ์ฌ์ฉํฉ๋๋ค.์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ชจ๋ ํจ์๋ ์คํ๋ ๋๋ง๋ค ํจ์ ๋ด๋ถ์ this
๊ธฐ์ ๋ฉด์ ์ ๋๋นํด ๊ฐ๋ ์ ๐ฐ ํ์ ํฌ๊ธฐ๋ก ์๋ผ ์ ๋ฆฌํฉ๋๋ค.๊นํ๋ธ๊ฐ ๊ถ๊ธํ๋ค๋ฉด ๋๋ฌ์ค์ธ์! ๐ ๊นํ๋ธ ๋ณด๋ฌ๊ฐ๊ธฐ (Since 2023.05.10 ~ )๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์๋ ๋ณ์์ ์ํ๋ฅผ ๊ณต์ ํ๊ณ ์ํ๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ๋๋ฌธ์ ์์์น ๋ชปํ ๋ฒ๊ทธ๋ฅผ ์ผ์ผํฌ ์ ์์ต๋๋ค. ํจ
๋ฐ๋ฒจ์ ์ต์ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์ด๋ , ๊ตฌ์ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์ด๋ ์คํ ํ๊ฒฝ์ ๊ตฌ์ ๋ฐ์ง ์๊ณ ํญ์ ํธํ ๊ฐ๋ฅํ JavaScript ๋ฒ์ ์ ์ฝ๋๋ก ๋ณํํด์ฃผ๋ ์ญํ ์ ํ๋ค. ๊ทผ๋ฐ ์ฌ๊ธฐ ๋ช๊ฐ์ง ์๋ฌธ์ด ๋ฐ๋ฅธ๋ค.๋ฐ๋ฒจ์ ๋๋ฌ์ผ 2๊ฐ์ง ์๋ฌธ์ ๋ฑ๋ฑํ ํํค์ณ๋ณด์.โ ์ฐธ๊ณ ๋ฌธ์Dalseo-๋ฐ๋ฒจ(
NoSQL์ ๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์นญํ๋ค.๊ธฐ์กด RDBMSํํ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํ ๋ฐ์ดํฐ ์ ์ฅ์์ ์๋ก์ด ํํ์ด๋ค.๋๋ ๋ถ์ฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์กฐํํ๋๋ฐ ํนํ๋์์ผ๋ฉฐ ์คํค๋ง์์ด ์ฌ์ฉ ํ๊ฑฐ๋, ๋์จํ ์คํค๋ง๋ฅผ ์ ๊ณตํ๋ ์ ์ฅ์๋ฅผ ๋ปํ๋ค.โ ์คํค