ํผ ๋ค๋ฃจ๊ธฐ - controlled component
๐ ์ค์ต ์๋ด
โ๏ธ CODE EDITOR (JSX)
โถ ์คํ ๋ฒํผ์ ๋๋ฌ ์ฝ๋๋ฅผ ํ
์คํธํ์ธ์.
๐๏ธ ๋ด ๋ฏธ๋ฆฌ๋ณด๊ธฐ
๋ด ์ฝ๋ ์คํ ๊ฒฐ๊ณผ
๐ฏ ์์ฑ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
๋ชฉํ
์ ์๋ํฐ ์ฝ๋๋ฅผ ์์ ํด์ ์ด ๊ฒฐ๊ณผ๋ฌผ๊ณผ ๋๊ฐ์ด ๋ง๋ค์ด๋ณด์ธ์!
๐ก TODO ์ฃผ์์ ์ฑ์์ ์ ๊ฒฐ๊ณผ๋ฌผ์ฒ๋ผ ๋์ํ๊ฒ ๋ง๋ค์ด๋ณด์ธ์
๐ค AI ์ ์๋์๊ฒ ์ง๋ฌธํ๊ธฐ
์ด๋ฒ ๊ฐ์ ์ ์ฉ
โผ
์ ์๋์ด ๋ต๋ณ ์ค์ด์์...
โ ๏ธ ํ์ต ๊ด๋ จ ์ง๋ฌธ๋ง ๋ต๋ณํฉ๋๋ค. ๊ด๋ จ ์๋ ์ง๋ฌธ์ ์๋์ผ๋ก ํ์ต์ผ๋ก ์ ๋๋ฉ๋๋ค.
Q1. React์ Controlled Component์์ ํผ ์์์ ๊ฐ์ ์ ์ดํ๊ธฐ ์ํด ๋ฐ๋์ ํจ๊ป ์ฌ์ฉํด์ผ ํ๋ ์์ฑ ์์?
๐ก Controlled Component์์๋ value ์์ฑ์ผ๋ก React ์ํ๋ฅผ ์ฐ๊ฒฐํ๊ณ , onChange๋ก ์ํ๋ฅผ ์
๋ฐ์ดํธํด์ผ ํฉ๋๋ค. value๋ง ์ค์ ํ๋ฉด ์ฝ๊ธฐ ์ ์ฉ์ด ๋์ด ๋ฒ๋ฆฝ๋๋ค.
Q2. ์ฒดํฌ๋ฐ์ค(checkbox)์ ํ์ฌ ์ ํ ์ฌ๋ถ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์?
๐ก ์ฒดํฌ๋ฐ์ค์ ํ์ฌ ์ํ๋ event.target.checked(boolean)๋ก ๊ฐ์ ธ์ต๋๋ค. value๋ ํ
์คํธ ์
๋ ฅ์ ์ฌ์ฉ๋ฉ๋๋ค.
Q3. ์ฌ๋ฌ ์
๋ ฅ ํ๋๋ฅผ ํ๋์ ํธ๋ค๋ฌ๋ก ์ฒ๋ฆฌํ ๋ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ์ฅ ์ ํฉํ ๊ฒ์?
๐ก input์ name ์์ฑ์ event.target.name์ผ๋ก ์ฝ๊ณ , setForm(prev => ({...prev, [name]: value}))์ฒ๋ผ computed property name์ ์ฌ์ฉํ๋ฉด ํ๋์ ํธ๋ค๋ฌ๋ก ๋ชจ๋ ํ๋๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
Q4. ํผ ์ ์ถ ํธ๋ค๋ฌ์์ ๋ฐ๋์ ํธ์ถํด์ผ ํ๋ ๋ฉ์๋๋?
๐ก ํผ ์ ์ถ ์ ๊ธฐ๋ณธ ๋์์ ํ์ด์ง ์๋ก๊ณ ์นจ์
๋๋ค. event.preventDefault()๋ฅผ ํธ์ถํด ์ด ๊ธฐ๋ณธ ๋์์ ์ฐจ๋จํด์ผ React์์ ํผ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
Q5. ํผ ์ํ์ ์ด๊ธฐ๊ฐ์ผ๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ์?
๐ก ํ
์คํธ ์
๋ ฅ์ ์ด๊ธฐ๊ฐ์ ๋ฐ๋์ ๋น ๋ฌธ์์ด ''๋ก ์ค์ ํด์ผ ํฉ๋๋ค. null์ด๋ undefined๋ฅผ ์ด๊ธฐ๊ฐ์ผ๋ก ์ฌ์ฉํ๋ฉด React๊ฐ ํด๋น input์ Uncontrolled๋ก ์ธ์ํ์ฌ ๊ฒฝ๊ณ ๊ฐ ๋ฐ์ํฉ๋๋ค.
๐
์์ฝ๋ค์!
์ ์: 0์ โ 70์ ์ด์์ด ๋์ด์ผ ํต๊ณผํฉ๋๋ค.