๐ฉโ๐ป๋์ ์๋น์ค๊ฐ ๐จโ๐ฉโ๐ฆโ๐ฆ์ฌ์ฉ์๋ฅผ ๋์ ํด์ ๐google๊ณผ ๊ฐ์ ์๋น์ค์ ๋ฌด์ธ๊ฐ๋ฅผ ์ด์ฉํ๊ณ ์ถ๋ค๋ฉด? ๐ฉโ๐ป ๋ด๊ฐ ๋ง๋ ์๋น์ค ๐จโ๐ฉโ๐ฆโ๐ฆ ๋ด๊ฐ ๋ง๋ ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ฉ์ ๐ ๋ด๊ฐ ๋ง๋ ์๋น์ค๊ฐ * ์ฐ๋ํ๋ ค๊ณ ํ๋ ์๋น์ค*(googl
๊ธฐ๋ฅ ๋ณ๊ฒฝ์ ๋ฐ๋ฅธ ์ฝ๋๋ณ๊ฒฝ ์ํํธ์จ์ด๋ ์ง์์ ์ผ๋ก ๋ณ๊ฒฝ๋๊ณ ์๋ค. ๊ทธ๋ฆฌ๊ณ , ์์ฃผ ๋ณ๊ฒฝ๋๋ ์ํํธ์จ์ด๋ฅผ ์ดํด๋ณด๋ฉด ์๋์ ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ์์ ๊ฒ์ด๋ค. ๊ธฐ์กด์ ์ฝ๋๊ฐ ๋ฐ๋๋ค ๊ธฐ์กด์ ๊ฒ์ด ์ฌ๋ผ์ง๋ค ์ญ์ ๋๋ค ์ด ์ค์์๋, ๊ฐ์ฅ ๋น๋ฒํ ์ผ์ด๋๋ ๊ฒ์ ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ์ผ ๊ฒ์ด๋ค.
๊ฐ๋ฐ์๋ ํญ์ ๋ฌด์์ ๋ง๋ ๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด๋ป๊ฒ ๋ง๋ค์ด์ผ ํ ๊น?๋ง๋ค๋ค๋ณด๋ฉด ๋ ์ ๋ง๋ค๊ณ ์ถ๊ณ , ๊ธฐ๋ฅ๋ค์ ๋ ์ถ๊ฐํ๊ณ ์ถ๊ณ , ์ ๊ณตํ๊ณ ์ถ๊ณ ... ๋ถ๋ช ์์ฌ์ด ๋๋๊ฒ ์ฌ์ค์ด๋ค.์ด๋ฐ ์์ฌ๋ค์ ์ฑ์ฐ๊ธฐ ์ํด ๋ง์ ๊ฒ๋ค์ ๋ด์ผ๋ ค๊ณ ๋ ธ๋ ฅํ๋ฉด...? ์๋๋ค! ์ด๋ค ์ ํ์ ๋ง๋ค ๋๋ ๊ทธ
๋ฌธ์ ๊ฐ ๋ง์ DOM API? ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ์์ด์ ๊ฐ์ฅ ๋ง์ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ ์์๋ DOM์ด๋ผ๊ณ ํ๋ API๋ผ๊ณ ํ ์ ์๋ค. DOM API๋ผ๊ณ ํ๋ ๊ฒ์ html๋ฌธ์๋ฅผ ๋ธ๋ผ์ฐ์ ๊ฐ renderingํ๊ธฐ ์ํด์, ๊ทธ๋ฆฌ๊ณ ๊ทธ ์์ ๋ง์ ๊ฒ๋ค์ ์๋ ์ํค๊ธฐ ์ํด์ ๊ฐ
๋ณํ๋ค!๋๋ถ๋ถ์ ์ํํธ์จ์ด๋ ํ์ค์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์๋ฃจ์ ์ผ๋ก ๋ง๋ค์ด์ง๋ค.์ฌ๊ธฐ์์ ํ์ค์? ๋งค๋ฒ ๋ณํ๊ฒ ๋๋ค!๋น์ฐํ ํ์ค์ ๋ฌธ์ ๊ฐ ๋ฐ๋๋๊น, ํ์ค์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ํํธ์จ์ด๋ ๋ฐ๋์ด์ผ ํ๋ค!๊ทธ๋์! ์ํํธ์จ์ด๋ ๊ต์ฅํ ์์ฃผ , ๊ทธ๋ฆฌ๊ณ ์ง์์ ์ผ๋ก ๋ฐ๋๊ฒ ๋๋ค.๋น์ฐ
Git-book์ ์ฝ๊ณ ๋ชฉ์ฐจ๋ณ ๋ด์ฉ ์ ๋ฆฌ๋ฅผ ํตํ ํ์ต์ 10์ฃผ๊ฐ ์คํฐ๋๋ฅผ ์์ํ๋น !\_! ๐บ๊ฐ๋ฐ์ ํ์ ์์ git์ ํ์๋ผ๊ณ ์๊ฐํ๋ค. ์ง๊ธ๋ ์ฝ๋๋ฅผ ์ฌ๋ฆฌ๋ ๋ฐ๋ ์ฌ์ฉ์ ํ๊ณ ์์ง๋ง, git์ ๋ํ ์์ธํ ๋ด์ฉ๊ณผ ์ฌ์ฉ๋ฒ์ ๋ชจ๋ฅด๊ณ ์์๋ค. ํ์ ์์๋ ๋ฌด๋ฆฌ์์ด ์ ์ฌ
๐ฑ์ ์ ํ ์ฑํ ํด์ server๊ฐ ๋ฉ์์ง๋ฅผ ๋ฐ์ ๋ค,๋ฉ์์ง๋ฅผ ๊ฐ ์ฌ์ฉ์๋ค์๊ฒ ๋ณด๋ด๋ ๋ฐฉ์์ ์ฑํ ์ฑ ๋ง๋ค๊ธฐ~!๐ฒ ์๋ฒ ์์ฑ์ ์ฒ์์ด๋ค! ์๋ฒ๋จ์ด ์ด๋ป๊ฒ ๋์๊ฐ๋์ง ์์ฃผ ๊ฐ๋จํ๊ฒ ์ง๋ง ์์๋ณด๋ ๊ณผ์ ์ ์ดํด๋ณด๊ธฐ ์ํด ์ฑ์ ๋ง๋๋ ์๊ฐ์ ๊ฐ์ ธ๋ดค๋ค. (์์ฃผ ์ผ๋ถ๋ถ์ด๊ฒ ์ง๋ง..
javascript์ application๋ค์ด์ง react์ application์ด ์๋๋ค!redux๋ react์ ๋ณ๊ฐ์ด๋ค.redux๋ angular, vue.js, (ํ๋ ์์ํฌ ์๋)vanilla.js ์์๋ ์ธ ์ ์๋ค.redux๋ react์ ์์กดํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
React Custom Hook (useTabs)์ ๋ง๋ค๋ ๋์ค ์์ ๊ฐ์ ์๋ฌ๋ฅผ ๋ง๋ฌ๋ค..! > ์๋ฌ ์ฝ๋ ์ด ์ค์ํด์ผ ํ ๋๊ฐ์ง ๊ท์น 1) ์ต์์(at the Top Level)์์๋ง ์ ํธ์ถํด์ผ ํ๋ค. ๋ฐ๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ ํน์ ์ค์ฒฉ๋ ํจ์ ๋ด์์ ์ ํธ์ถ ํ๋ฉด ์๋๋ค. ๋์ ์ด ์คํ๋๊ธฐ ์ ์ ํญ์ ํจ์์ ์ต์์(at the top level)์์...
์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค๋ค๋ณด๋ฉด, ์ข ์ข ๋ฐ๋ณต๋๋ ๋ก์ง๋ค์ด ๋ฐ์ํ๋ค.\-> ex) input ์ ๊ด๋ฆฌํ๋ ์ฝ๋๋ ์์ฃผ ์์ฑํ ์ ์๋ ์ฝ๋์ด๋ค. \-> input์ ๊ด๋ฆฌํ๋ ค๋ฉด e.target ์์ ๋ค์ด ์๋ name๊ฐ์ด๋value๋ฅผ ์ฝ์ด์ ์ฐธ์กฐํด์ ์ด๋ค ์๋ก์ด ์ํ๋ฅผ ์ค์ ํด์ผ ํจ
์ด์ ์ ์ปดํฌ๋ํธ ์ํ๋ฅผ ์ ๋ฐ์ดํธ ํ ๋์๋ useState์ฌ์ฉํด์ ์๋ก์ด ์ํ๋ฅผ ์ค์ ํ๋ค.useState๋ง๊ณ , useReducer๋ผ๋ Hook์ ์ฌ์ฉํด์ ์ํ๋ฅผ ์ ๋ฐ์ดํธ ํ ์ ์๋ค.useState\->์ค์ ํ๊ณ ์ถ์ ๋ค์์ํ๋ฅผ ์ง์ ์ง์ ํด์ฃผ๋ ๋ฐฉ์์ผ๋ก ์ํ๋ฅผ ์ ๋ฐ์ดํธ.
์ปดํฌ๋ํธ์์ ๋ฆฌ๋ ๋๋ง ๋ถ ํ์ํ ๋ ์ด์ ์ ๋ ๋๋ง ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฌ์ฉ ํ ์ ์๊ฒ ํ๋ ๋ฐฉ๋ฒ.\-> React.memo ํจ์ ์ฌ์ฉํ๋ฉด ์ปดํฌ๋ํธ์ ๋ฆฌ๋ ๋๋ง ์ฑ๋ฅ ์ต์ ํ๋ฅผ ํด์ค ์ ์๋ค.์ปดํฌ๋ํธ์ props ๊ฐ ๋ฐ๋์ง ์์๋ค๋ฉด, ๋ฆฌ๋ ๋๋ง์ ๋ฐฉ์งํ์ฌ ์ปดํฌ๋ํธ์ ๋ฆฌ๋ ๋๋ง ์ฑ๋ฅ
useMemo ์ ๋น์ทํ HookuseMemo ๋ ํน์ ๊ฒฐ๊ณผ๊ฐ์ ์ฌ์ฌ์ฉ ํ ๋ ์ฌ์ฉํ๋ ๋ฐ๋ฉด, useCallback ์ ํน์ ํจ์๋ฅผ ์๋ก ๋ง๋ค์ง ์๊ณ ์ฌ์ฌ์ฉํ๊ณ ์ถ์ ๋ ์ฌ์ฉ.App.js์์ onCreate, onRemove, onToggle\-> ์ ํจ์๋ค์ ์ปดํฌ๋ํธ
๋ฆฌ์ํธ์์ ์ปดํฌ๋ํธ ์๊น์๋ฅผ ์ ์ํ ๋ ์ฌ์ฉํ๋ ๋ฌธ๋ฒ.์ผํ ๋ณด๋ฉด html์ฒ๋ผ ์๊ฒผ์ง๋ง, ์ฌ์ค์ javascript์ด๋ค.\-> babel์ด๋ผ๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํด์ xmlํํ์ ์ฝ๋๊ฐ javascript๋ก ๋ณํ๋๋ค.1\. ํ๊ทธ๋ ์ด์์ผ๋ฉด ๊ผญ ๋ซํ ์์ด์ผํจ.\-> Self cl
์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํ์ฌ ์ด ์ ์ ์ฐ์ฐ๋ ๊ฐ์ useMemo๋ผ๋ Hook ์ ์ฌ์ฉํ์ฌ ์ฌ์ฌ์ฉ.์ฑ๋ฅ์ ์ต์ ํ ํด์ผ ํ๋ ์ํฉ์์ ์ฌ์ฉ.ํน์ ๊ฐ์ด ๋ฐ๊ผ์๋๋ง ํน์ ํจ์ ์คํํด์ ์ฐ์ฐ์ ํ๋๋ก ์ฒ๋ฆฌ.์ํ๋ ๊ฐ์ด ๋ฐ๋์ง ์์๋ค๋ฉด, ๋ฆฌ๋ ๋๋งํ ๋ ์์ ์ ๋ง๋ค์ด ๋จ๋ ๊ฐ์ ์ฌ์ฌ์ฉํ
useEffect ๋ผ๋ Hook ์ ์ฌ์ฉํ๋ฉด!๋ง๋ ์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ ๋์ ๋ (์ฒ์ ๋ํ๋ฌ์ ๋)์ธ๋ง์ดํธ ๋์ ๋ (์ฌ๋ผ์ง ๋, ์ญ์ ๋ ๋) ์ ๋ฐ์ดํธ ๋ ๋ (ํน์ props๊ฐ ๋ฐ๋ ๋) ํน์ ์์ ์ ์ฒ๋ฆฌํ ์ ์๋ค.๐์ฒซ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ : ํจ์ ๋ฑ๋ก๋ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ
html๊ณผ js๋ฅผ ์ฌ์ฉํ ๋๋ ํน์ DOM์ ํํด์ผ ํ๋ ์ํฉ์ document.getElementbyId() querySelector() ๊ฐ์ DOM selector์ ์ฌ์ฉํด์ ์ ํํจ.react๋ฅผ ์ฌ์ฉํ๋ ํ๋ก์ ํธ์์๋ ๊ฐ๋์ฉ DOM์ ์ง์ ์ ํํด์ผ ํ๋ ์ํฉ ๋ฐ์ํ ์
React 16.8 ์ด์ ์์๋ ํจ์ํ ์ปดํฌ๋ํธ์์๋ ์ํ๋ฅผ ๊ด๋ฆฌํ ์ ์์๋ค.๊ทธ๋ฌ๋ React 16.8์์ hooks ๋ผ๋ ๊ธฐ๋ฅ๋์ ์ผ๋ก ์ธํด ํจ์ํ ์ปดํฌ๋ํธ์์๋ ์ํ๋ฅผ ๊ด๋ฆฌํ ์ ์๊ฒ ๋์๋ค~!๋ฆฌ์ํธ์์ useState๋ผ๋ ํจ์ ๋ถ๋ฌ์ค๋ ๊ฒ.useState ์ฌ์ฉํด์
๊ณต์ ๊ทธ๋ฆด๋๋ ํญ์ ์ค์ฌ์ ์ ๊ธฐ์ค์ผ๋ก ๊ณต์ x , y ๊ฐ์ ์ก๋๋ค. => ์ค์ฌ์ ์ด ๊ณต์ ์ค์ ์์น (ํ์ ์ )๋ฐ์ง๋ฆ์ด ๊ต์ฅํ ์ค์!๋ฐ์ง๋ฆ์ x, y ๊ฐ์๋ค๊ฐ + , - ํด์ค์ผ ์ค์ ๋ก ๊ณต์ด ๋ธ๋ผ์ฐ์ ์ ๋ฟ์๋์ง ์ ์ ์์.๊ทธ๋์ ๊ณต์ x , y๊ฐ์ ๋น๊ตํ๋ ๊ฒ์ด ์๋