[Project]
๊ธฐ๊ฐ: 2020.10.07 ~ 2020.10.14
์ฌ์ฉ ์คํ:
. React
. React-Router-Dom
. JavaScript
. SASS
. html/css
๋ชฉํ:
. JavaScript/html/css๋ก ๊ตฌํํ๋ ์ฝ๋๋ฅผ react๋ก code restructuring ํ ์ ์๋ค.
. back-end์ ์์ฌ์ํตํ์ฌ ํ์๊ฐ์
/๋ก๊ทธ์ธ ์งํํ ์ ์๋ค.
๊ธฐ์กด์ JavaScript๋ก ์ฝ๋ ์์ฑํ์ ๋๋ getElementby๋ฅผ ํ์ฉํด์ DOM์ ์ง์ ์ ๊ทผํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋๋ฐ react๋ฅผ ์จ๋ณด๋ ๋ชจ๋ ๊ฒ์ state๋ก ๊ด๋ฆฌํ๊ณ ์ง์ ์ ๊ทผํ๋ ๋ฐฉ์์ ์ง์ํ๋ค๋ ๊ฒ์ ์์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ด ์๊ฐ์๋ ์ ํจํ์ง ์์ input ๊ฐ์ด state๋ฅผ ๊ณ์ set ํ๋ค๋ ๊ฒ ์ฒ์์๋ ๋นํจ์จ์ ์ด๋ผ ์๊ฐํ๋ค. ๊ทธ๋์ ์ฝ๋ ๋ฆฌ๋ทฐ ๋ฐ๊ธฐ ์ ์ ์ฝ๋๋ฅผ ๋ณด๋ฉด state ์ธ์์ ๊ด๋ฆฌ๋๋ ๊ฒ์ด ๋ง์๊ณ ref๋ฅผ ์ฌ์ฉํ์ฌ dom์ ์ง์ ์ ๊ทผํ๋ ๋ฐฉ์์ด ๋ง์๋ค.๐ ํ์ง๋ง ์ฝ๋ ๋ฆฌ๋ทฐ ํ์๋ ref ์ฌ์ฉ์ ์์ ํ๊ณ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ํ์ฉํ์ฌ input์ value๋ฅผ ์ทจํ์ฌ ์ฌ์ฉํ๋ค.๐
input tag์ value ์ป๋ ๋ฐฉ๋ฒ!
1) ref: ์ ๊ทผ์ด ํ์ํ tag์ ref ๊ผฌ๋ฆฌํ๋ฅผ ๋ถ์ฌ์ DOM์ ์ง์ ์ ๊ทผ
2) name: e.target.value๋ฅผ state์ ์ ์ฅํ๊ณ attribute๋ฅผ ์ด์ฉํ์ฌ value๋ฅผ get! - event์ ์ฒ๋ฆฌํ input tag๊ฐ 2๊ฐ ์ด์์ผ ๊ฒฝ์ฐ
3) value: e.target.value๋ฅผ state์ ์ ์ฅํ๊ณ attribute๋ฅผ ์ด์ฉํ์ฌ state์ update๋ ๊ฐ์ ์ง์ ํ์ฌ ํ๋ฉด์ ๋ณด์ฌ์ค(์ผ์ข
์ ์ฐฉ์) - event์ ์ฒ๋ฆฌํ input tag๊ฐ 1๊ฐ์ผ ๊ฒฝ์ฐ
์ฌ์ค! ์์ง์ ์ด๋ณด ๊ฐ๋ฐ์๋ก์ ๋ฐฉ๋ฒ์ ์ฐจ์ด๊ฐ ๋ฌด์์ธ์ง๋ฅผ ์์ง๋ ์๋ฒฝํ๊ฒ ์์ง๋ ๋ชปํ์ง๋ง... ์ ์ถ๋ฅผ ํด๋ณด๋ฉด state์ ์ ์๋ง์ผ๋ก๋ component ์ฌ์ด์ ์ ๊ธฐ์ ์ธ ์ฐ๊ฒฐ๊ณ ๋ฆฌ๋ฅผ ์ ์ ์๋ค๋ ์ ์์ ์ฝ๋ ๊ฐ๋
์ฑ ์ธก๋ฉด์์ ํฐ ์ฅ์ ์ด ์๊ณ , state๊ฐ ๋ณํํ ๋๋ง component๊ฐ rendering์ด ๋๊ฒ ํ์ฌ ์นํ์ด์ง์์ ์ผ์ด๋๋ ๋ชจ๋ ๋ณํ๋ฅผ ๊ฐ๋ฐ์์ control ์์ ๋๊ธฐ ์ํจ
์ด ์๋๊น ์ถ๋ค.
์ฌ๊ธฐ๋ ref์์ ์ธ์์ด๋ค... ์ธ์ฐ์ ref!
์์ ์ฝ๋๋ nav bar์ ์๋ avatar
๋ฅผ click ํ์ ๋ tool box๊ฐ drop down ๋๊ณ , avatar + ์ ์ฒดํ๋ฉด
์ ํด๋ฆญํ์ ๋๋ tool box๊ฐ ๋ซํ๋ ํจ๊ณผ๋ฅผ ์ค ๋ ์ฌ์ฉํ๋ค. avatar ์์น๋ฅผ ํน์ ์ง๊ธฐ ์ํด์ ๋๋ ref๋ฅผ ์ฌ์ฉํ๋ค. ๊ณต์ ๋ฌธ์๋ฅผ ๋ณด๋ฉด ref๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ํฌ๊ฒ 3๊ฐ์ง๊ฐ ์๋๋ฐ
1) Managing focus, text selection, or media playback.
2) Triggering imperative animations.
3) Integrating with third-party DOM libraries.
๋๋ ์ฌ๊ธฐ์ ์ฒซ๋ฒ์งธ ๊ฒฝ์ฐ์ ํด๋นํ๊ธฐ ๋๋ฌธ์ ref๋ฅผ ์ฌ์ฉํด๋ ๋ฌธ์ ๊ฐ ์์์ง๋ง ref๋ฅผ ์ฌ์ฉํ์ง ์๋ ๋ฐฉ๋ฒ์ ๋ํด์ ๊ณ ๋ฏผํ๊ฒ ๋์๋ค. ref๋ฅผ ์ฐ์ง ์๊ณ tool box์ state๋ฅผ ๊ด๋ฆฌ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์๋๊ฑธ๊น?? ๐ค
๊ทธ ๋, ๋์ ๊ฐ์ ๊ณ ๋ฏผ์ ํ๋ ๋๊ธฐ๊ฐ ํํธ๋ฅผ ์ฃผ์๊ณ img tag์ tab index attribute๋ฅผ ๋ถ์ฌํ๊ณ Click๊ณผ onBlur๋ฅผ ์ ์ ํ ํ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์๋ค.
โtab index๋ฅผ ์ฌ์ฉํ๋ฉด focus ๊ธฐ๋ฅ์ด ์๋ ์ผ๋ฐ tag์๋ focus์ ๊ด๋ จ๋ event๋ฅผ ์ธ ์ ์๋ค.
์ฝ๋๋ฅผ ์ค์ค๋ก ์ง๋ค ๋ณด๋ฉด ์์ฃผ ํ์ด๋์ค๋ ๋ฌผ์ํ ์ด์ธ๋ง(?)
๋ณธ๋ฅ์ด ์๋ค. ๊ทธ๋ด ๋๋ง๋ค ์ด์ฌํ ๊ตฌ๊ธ๋งํ๊ณ ๊ณต์๋ฌธ์๋ฅผ ์ฝ์ด๋ณด๋ฉฐ ์ดํดํ๋ ค๋ ๊ณผ์ ์ด ์์ง๋ง ์ผ๋จ ๋ด๊ฐ ๊ฐ์ง ์ง์์์ค์ด ์์ง ์์์ ๊ณต์ ๋ฌธ์๋ฅผ 100% ์ดํดํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ์์ ์๋ฐ์ ์๋ค.
(๋ฐ์๋ค์ฌ...) ์ด๋ค ์ง์์ด๋ 100% ์ดํด๋ผ๋ ๊ฒ์ ์๊ธฐ ๋๋ฌธ์ ์ผ๋จ ์ฐ๋ค ๋ณด๋ฉด ๋์ค์ ์์ฐ์ค๋ ์ต์ํด์ง๊ณ ์ดํด๊ฐ ๋๊ฒ ์ง๋ง ๊ธฐ๊ณ์ ์ผ๋ก ์์ฑํ๋ ์ฝ๋๋ ๋์ค์ ๋ค์ ์ฐ๋ ค๊ณ ํด๋ ๊ธฐ์ต์ ๋จ์ง ์๊ธฐ ๋๋ฌธ์ ๊ทธ ๊ท ํ์ ์ก์ผ๋ ค๊ณ ๋
ธ๋ ฅ์ ๋ง์ด ํ๋ ๊ฒ ๊ฐ๋ค.
์ด๋ฐ ๋ฌผ์ํ์ ๋ช์ ๋น ์ง ๋ ๋จผ์ ๋ค๊ฐ์์ ๊ฐ์ด ๊ณ ๋ฏผํด์ฃผ๊ณ ๋ ๊ฐ์ ๊ณ ๋ฏผ์ ํ๋ดค๋ ์
์ฅ์์ ๊ฐ์ ๋๋์ด๋ก ์๋ ค์ค ์ฐ๋ฆฌ ๋๊ธฐ๋ถ๋ค๊ป ๋๋ฌด ๊ณ ๋ง๋ค๊ณ ๋งํ๊ณ ์ถ๋ค.(โ'โก'โ)
๊ทธ๋ฆฌ๊ณ ์์ผ๋ก ๋ณธ๊ฒฉ์ ์ธ ํ ํ๋ก์ ํธ๊ฐ ์์ํ
๋ฐ ํ ํ๋ก์ ํธ์ 8ํ ์ ์ํต๊ณผ ๋ฐฐ๋ ค์์ ๋ง๋ค์ด์ง๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค. ๋ด ๊ฐ์ธ์ ์ธ ์ค๋ ฅํฅ์๋ ๊ธฐ๋๋์ง๋ง ์๋ก ๋ค๋ฅธ ๊ธธ์ ๊ฑธ์ด์จ ๋ฉ์ง ๋๊ธฐ๋ถ๋ค๊ณผ ๋ง๋ค์ด ๋ผ ์๋ฆ๋ค์ด ์ํ(?)์ด ๋๋ฌด๋๋ ๊ธฐ๋๋๋ค! ํจ๊ปํด์ ์ข์ 13๊ธฐ ์ ๋ถํํฉ๋๋ค!ใพ(โขฯโข`)o