React์์๋ input์ ์ ๋ ฅ๋ ๊ฐ์ ์ด๋ป๊ฒํ๋ฉด ๊ฐ์ ธ์ฌ ์ ์์๊น? > inputํ๊ทธ์ ๊ฐ์ ์ ๋ ฅํ๋ฉด state์ ์๋ก์ด ๊ฐ์ฒด๊ฐ์ ํ๋ ์ถ๊ฐํ๋ ๋ก์ง์ ๊ตฌํํ๊ณ ์์๋๋ฐ inputํ๊ทธ์ ๊ฐ์ ์ป์ด์์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๊ณ ๋ฏผ ์ค์ด์๋ค. > > DOM์์๋ input์
state์ ๋ฐฐ์ด์์ ๊ฐ์ฒด๋ค์ ๋ด๊ณ ์๋ ๊ฐ์ map์ ์ด์ฉํด์ ๊ฐ๊ฐ์ liํ๊ทธ๋ค๋ก ์์ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋๋ ๊ณผ์ ์์ ํ ๊ฐ์ง ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.์๋์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์๋๋ฐ ์ฌ๊ธฐ์ ์๋ฌ ๋ฌธ๊ตฌ๋ฅผ ์ ์ดํด๋ณด๋ฉด, ๋ฆฌ์คํธ์์๋ ๊ณ ์ ํ key๋ฅผ ์ฌ์ฉ ํด์ผ ๋๋ค! ๋ผ๋ ๋ฌธ๊ตฌ๊ฐ ๋
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํด์ ํฐํธ์ด์ธ์ ๋ฐ์์ ํ๋ก์ ํธ์ ์์ด์ฝ๋ค์ ๋ฃ์ด์ ์ฌ์ฉํด ๋ณผ ๊ฒ์ด๋ค.fontawesome์ ์ค์น ํ ๋ค์์๋ ๋ฆฌ์กํธ์์ ์ฌ์ฉํ ๋ ์ปดํฌ๋ํธ ๋จ์๋ก ์ฌ์ฉํ ์ ์๋ค.์์ ๊ฐ์ด ์ฌ๋ฌ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ ์ ์์ง๋ง, ์๋์ ์ฝ๋๋ก ์ถ๊ฐํด ๋ณผ ๊ฒ์ด๋ค.์์ impor
๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํด์ ํ๋ก์ ํธ๋ฅผ ํ๋ ์งํํด ๋ณผ ๊ฒ์ด๋ค.์ ์ฒด ์ต๊ด์ ๊ฐ์๋ฅผ ์ ์ ์๋ค.์ฌ์ฉ์๊ฐ ์ ๋ ฅ์ฐฝ์ ์ ๋ ฅํ ๋ค ์ถ๊ฐ ๋ฒํผ์ ๋๋ฅด๋ฉด ํ๋์ ์ต๊ด์ ๋ชฉ๋ก์ ์ถ๊ฐํ๋ค.๊ฐ๊ฐ์ ๋ชฉ๋ก์ ์ถ๊ฐํ๊ณ , ๊ฐ์์ํฌ ์ ์๋ค.๊ฐ๊ฐ์ ๋ชฉ๋ก์ ์ญ์ ํ ์ ์๋ค.Reset ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ชจ๋
๊ธฐ์กด ์ฝ๋ > ๋ฒํผ ํด๋ฆญ์ ๊ฐ๊ฐ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ํตํด ๊ธฐ๋ฅ์ด ๋์๋๋ค. ๊ฒ์ ์์ ๊ฒ์ ๋ฉ์ถค ๊ฒ์ ์น, ํจ์ ๋ฐ๋ผ ๊ทธ ์์์ ๊ฐ๊ฐ ์๋ฆผ ์๋ฆฌ์ ์๋ฆผ์ฐฝ์ ๋ค๋ฅด๊ฒ ์ค์ ํ๋ค. ๊ฒ์ ์๊ฐ์ ์ด๊ธฐํํ๋ค. ๋จ์ ๊ฒ์ ์๊ฐ์ ๋ณด์ฌ์ฃผ๋ ํจ์ ๋จ์ ๋ชฉํ ๊ฐ์๋ฅผ ๋ณด์ฌ์ฃผ๋ ํจ์ ๋ฒํผ ์จ
๊ฒ์์์ญ์ ์ก์์ผ๋๋๋ฐ ๋ถ๋ชจ ๋ฐ์ค์ display: flex๋ฅผ ์ฃผ๊ณ ๊ฒ์ ์์ญ์๋ ๋์ผํ๊ฒ ์ฃผ์๋๋ฐ ๊ทธ๋ด ํ์๊ฐ ์์ด๋ถ๋ชจ ๋ฐ์ค์ ์๋์ ์์ฑ๋ง ์ฃผ์ด๋ ๋ด๊ฐ ์ํ๋ ๋๋ก ์ ์์น๋ฅผ ์ก์ ์ ์์๋ค.\--> ๋ด๊ฐ ์๊ฒ๋ชจ๋ฅด๊ฒ ๋ถ๋ชจ ํ๊ทธ์๋ display: flex๋ง ์ฃผ๋ คํ๊ณ
๊ตฌํํ ๋ ํ์ํ ๊ฒ ์๊ฐํด๋ณด๊ธฐ์ ํ๋ ์๊ฐ์์ ๋น๊ทผ์ ์์ ์ ์น๋ฆฌํด์ผ๋๋ ๊ฒ์์ ๋ง๋ค๊ฒ์ด๋ค๊ธฐ๋ฅsetInterval์ ์ด์ฉํด์ ํ์ด๋จธ ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ๋น๊ทผ์ ์ ํ์๊ฐ์์ ๋ค ์์ ๋ฉด ์น๋ฆฌ๋ฒ๋ ๋ฅผ ํด๋ฆญํ ๊ฒฝ์ฐ ๊ฒ์์ด ๋๋๋ค์ ํ๋ ์๊ฐ์ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ๊ณ , ๋จ์ ๋น๊ทผ์ ๊ฐ์๋ฅผ ๋ณด
HTML์ด ๋ชจ๋ ๋ก๋๋๊ธฐ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ญ์์ HTML์ ์ฐธ์กฐํ๋๋ฐ addEventListener์์ HTMLํ๊ทธ๋ฅผ ์ฐธ์กฐํ์ง ๋ชปํด์ ๊ณ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.๋ณดํต body ํ๊ทธ๊ฐ ๋๋๊ธฐ ๋ฐ๋ก ์์ ๋ถ๋ถ์ script์ ์์น๋ฅผ ์ฎ๊ฒจ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ง์ด๋ค ์ฌ์ฉํ๋๋ฐ๋๋
ํ์ฌ ๋ฆฌ์กํธ๋ฅผ ๊ณต๋ถํ๋ฉด์ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ ๊น๊ฒ ๊ณต๋ถํ๊ณ ์๋ ์ค์ด๋ค.๋ฆฌ์กํธ๋ฅผ ์ด์ฉํ๋ฉด html์ ๊ธฐ๋ณธ์ ์ธ ์ฝ๋๋ฅผ ํ๋์ฝ๋ฉํ์ง ์์๋ ๋์ง๋ง, ๊ธฐ๋ณธ์ ์ธ ๊ฒ์ ๋ง๋ค ์ ์์ด์ผ ๋๊ธฐ ๋๋ฌธ์ ์๋ฐ์คํฌ๋ฆฝํธ์ html ๊ตฌ์กฐ๋ฅผ ์ง๋๊ฒ์ ๋ง์ ์๊ฐ์ ํฌ์ํ๊ณ ์๋์ค์ด๋ค.๐ป ์ค๋ ฅ์
๊ตฌํ ํ๋ฉด2021.05.11});
๊ตฌํํ ๋ ํ์ํ ๊ฒ ์๊ฐํด๋ณด๊ธฐ๊ธฐ๋ฅ1-1. ์ฌ์ฉ์๊ฐ ์ ๋ ฅ์ฐฝ์ ๋ชฉ๋ก์ ์ ๋ ฅํ๊ณ Enter key ๋๋ +๋ฒํผ์ ํด๋ฆญํ์ ๋ ํ๋ฉด์ ์ผํ ๋ฆฌ์คํธ๋ฅผ ์ถ๊ฐํ๋ค.1-2. ๋ชฉ๋ก ์ค๋ฅธ์ชฝ์๋ ํด์งํต ์์ด์ฝ์ด ์๋๋ฐ ์ด๊ฒ์ ํด๋ฆญํ๋ฉด,ํด๋น ์ผํ ๋ชฉ๋ก์ด ๋ฆฌ์คํธ์์ ์ง์์ง๋ค.UI2-1. ์ฌ
๋ฉ๋ด์ ๋ง์ฐ์ค๊ฐ ์ฌ๋ผ๊ฐ์ ๋ border์ background-color๋ฅผ ๋ณํ๋๋ก ์ง์ ํ๋๋, ๊ธฐ์กด ์ฌ์ด์ฆ์์ border๊ฐ ์ ์ฉ๋์ด์ ์ฌ์ด์ฆ๊ฐ ๋ฐ๋๋ฉด์ ๋ฉ๋ด๋ค์ด ์์ง์ด๋ ์๋ฌ๋ฅผ ๋ฐ๊ฒฌํ๋ค.ํ์์๋ border: transparent;๋ฅผ ์ฃผ๊ณ ,๋ง์ฐ์ค hover์ผ ๋๋
์ฐ์ ํ๋ฉด์์ ์คํฌ๋กค์ ํ ๋ ๊ทธ ํ๋ฉด์ ๋์ด๊ฐ ํ ํ๋ฉด์ ๋์ด๋ฅผ ๋์ด๊ฐ๊ฒ ๋๋ฉด, ์ด๋ฒคํธ๋ฅผ ์ ์ฉํ ๋ฒํผ์ ๋ณด์ด๊ฒ ํ๊ณ , ์คํฌ๋กค ์ด๋ฒคํธ๋ฅผ ์ ์ฉํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ค.๊ทธ๋ฐ๋ฐ, ์ฐ์ ํ๋ฉด ์์ญ์ ๋ฐ๋ผ ๋ฒํผ์ ๋ณด์ด๊ณ , ๊ฐ์ถ๋ ๊ฒ์ ์ ์ ์ฉ๋์์ผ๋,์คํฌ๋กค ์ด๋ฒคํธ๋ฅผ ๋ฐ๋ก ์ ์ํด ๋
์น ํ์ด์ง์ ๋ฉ๋ด๋ฅผ ๋นผ๋ฉด ์ ์ผ ์๋จ์ home๋ถ๋ถ์ผ๋ก ๋ง๋ค์ด ๋์๋ค.์ฐ์ Element.getBoundingClientRect()๋ฅผ ์ด์ฉํด์ home์์ญ์ ํฌ๊ธฐ๋ฅผ ๊ตฌํ๊ธฐ๋ window.scrollY์ ๊ฐ์ ๊ตฌํด์ ์์์ ๊ตฌํ home ์์ญ์ ์ด์ฉํด์ ์ด๋ฒคํธ๋ฅผ ๊ฑธ๊ธฐhom
๋ฉ๋ด๊ฐ ํด๋ฆญ๋๋ฉด ๊ฐ์ ๊ฐ์ ธ์์ addEventListener์ ๋ฑ๋กํ ํจ์๋ฅผ ์คํ์ํจ๋ค.๋ค์ด์จ event ๊ฐ์ฒด์ target์ ์ ๊ทผํด์ ํด๋น ์ด๋ฒคํธ๊ฐ ์ผ์ด๋ ์์๋ฅผ ๊ฐ์ ธ์จ๋ค.๋ฉ๋ด์ ์์๋ฅผ ๊ฐ์ง๊ณ ์์ ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ์ผ์ด๋ฌ์ ๋์ ๋์์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋จผ์ ๊ทธ ์์๋ฅผ ๊ฐ
menu ๊ตฌํํ๊ธฐ ํ๋ฉด์์ ์คํฌ๋กค์ ํ๋ฉด, ๋ณดํต ํ๋ฉด ์๋จ์ ์์นํ ๋ฉ๋ด๊ฐ ์ฌ๋ผ์ง๊น? ์ฌ๋ผ์ง๊ฒ ๊ตฌํํ๋ค๋ฉด, ์คํฌ๋กค ์ ๋ฉ๋ด๋ฅผ ์ฌ๋ผ์ง๊ฒ ํ๋ค๊ฐ ๋ง์ฐ์ค๋ฅผ ํ๋ฉด์ ์๋จ์ผ๋ก ๊ฐ์ ธ๊ฐ๋ฉด, ๋ฉ๋ด๊ฐ ๋ํ๋๋๋ก ๊ตฌํํ ์ ์์ ๊ฒ์ด๋ค. ์ด๋ฒ์ ๊ตฌํํ๋ ค๊ณ ํ๋ ๊ธฐ๋ฅ์ ๋ฉ๋ด๊ฐ ์๋จ์
css์์ background ์์ฑ์ ์ฌ์ฉํด์ url๋ก ํด๋น ๊ฒฝ๋ก์ ์ด๋ฏธ์ง๋ฅผ ์ง์ ํด ์ค ํ ์ด๋ฏธ์ง๋ฅผ ๋ฐ๋ณตํ์ง ์์ผ๋ ค๊ณ no-repeat๋ฅผ ์ถ๊ฐ์ ์ผ๋ก ์ค์ ํด์ฃผ์๋๋ฐ ๋ ํ๋๊ฐ ์๊ฐ๋๋ก ์ ๋์ง ์์๋ค.์ด๋ฏธ์ง๊ฐ ๋ฐ๋ณต๋์ง ์๋ ๊ฒ์ ์ ์ ์ฉ๋์์ง๋ง, ํ๋ฉดํฌ๊ธฐ๋ฅผ ํค์ฐ๊ณ ์ค์ผ
nav ํ๊ทธ๋ฅผ ์ฌ์ฉํด์ ulํ๊ทธ ๋ฐ์ li๋ค์ ๋ง๋ค์ด์ ๋ฉ๋ด๋ฅผ ๊ตฌํํ๋ ค๊ณ ์ฝ๋๋ฅผ ์์ฑํ์๋ค.css์์ ํด๋น liํ๊ทธ์ ๋ง์ฐ์ค๋ฅผ ์ฌ๋ ธ์ ๋ ๋์์ ์ด๋ป๊ฒ ๊ตฌํํ ๊น ์๊ฐํ๋ค.์ฌ์ฉ์์๊ฒ ํด๋ฆญ์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ์๋ ค์ฃผ๊ธฐ ์ํด cursor: pointer ๋ฅผ ์ฃผ์๋ค. hove
๊ฐ์ฒด ๋ฐ ๋ฐฐ์ด์ JavaScript๋ก ๋ค๋ฃจ๊ธฐUI๋ฅผ ์์ด์ดํ๋ ์์ผ๋ก ๊ทธ๋ฆฐ ํ, HTML & CSS๋ก ๋์์ธํ๊ธฐํน์ ๋์์ ํ์ฌ ์์ ์ ๋ํ ๋ ์จ ๋ฐ์ดํฐ ๋ค๋ฃจ๊ธฐ๊ฐ์ฒด๋ก ์ฃผ์ด์ง๋ ๋ ์จ ๋ฐ์ดํฐ ๊ฐ์ ํน์ element์ DOM์ ํ์ฉํ์ฌ ๋์ ์ผ๋ก ๋ ๋๋ง ํ๊ธฐ์์(resource
addEventListener( )๋ EventTarget์ ํจ์์ด๋ค.addEventListener( ) ๋ฉ์๋๋ ์ง์ ํ ์ด๋ฒคํธ๊ฐ ๋์์ ์ ๋ฌ๋ ๋ ๋ง๋ค ํธ์ถํ ํจ์๋ฅผ ์ค์ ํ๋ค.์ฌ์ฉ๋ฐฉ๋ฒ์๋ 2๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค.1\. ํํ์์ ํตํด ๊ตฌํํ ํจ์๋ฅผ ๋ฃ๋ ๋ฐฉ๋ฒ2\. ์ต๋ช ํจ์