React์์ input ์ ๋ ฅ์ด ์๋๋ ๊ฒฐ์ ์ ์ธ ์ด์
1. ์๋๋ ์ด์ ์ , ChatGPT์ ๋ต๋ณ
ChatGPT์ ๋ต๋ณ์ ๋ค์๊ณผ ๊ฐ๋ค.
React์์ input ํ๊ทธ์ value ์์ฑ์ ์ํ๊ฐ์ ๋ฃ์ผ๋ฉด, ๊ทธ ๊ฐ์ ์ฝ๊ธฐ ์ ์ฉ ์ํ๊ฐ ๋์ด ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๋์ , onChange ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ ฅ ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
์ด์ ๋ React์์๋ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ ์ฌ์ฉํ์ฌ ์ปดํฌ๋ํธ์ ์ํ๋ฅผ ์ ๋ฐ์ดํธํ๊ณ ๋ ๋๋งํ๋ ๋ฐฉ์์ผ๋ก ์๋ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋์ input ํ๊ทธ์ value ๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด React๋ ์ด๋ฅผ ์๋ก์ด ์ํ๋ก ์ธ์ํ๊ณ , ์ด์ ๋ฐ๋ผ ์ปดํฌ๋ํธ๋ฅผ ๋ค์ ๋ ๋๋งํฉ๋๋ค. ๊ทธ๋ฌ๋ value ๊ฐ์ด ์ฝ๊ธฐ ์ ์ฉ์ด๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ๋ณ๊ฒฝํ ์ ์์ผ๋ฏ๋ก, onChange ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ฅผ ์ ๋ฐ์ดํธํ๊ณ ์๋ก์ด ๊ฐ์ ์ ๋ ฅํ๋ ๊ฒ์ด ํ์ํฉ๋๋ค.
๊ฐ๋จํ๊ฒ ๋งํ๋ฉด "input์ value๋ก ์ํ๊ฐ์ ์ฐ๋๊น ์๋์ง!! ๋๊ฒ ํ๊ณ ์ถ์ผ๋ฉด onChange๋ฅผ ์ด์ฉํด" ์ด๊ฑฐ๋ค
โญ๏ธ ์ฌ๊ธฐ์ ์ค์ํ ์๊ฐํด์ผํ๋๊ฑด ์ ์ฝ๊ธฐ ์ ์ฉ์ด ๋๊ณ , ์ ํํ์ด๋ฉด onChangeํธ๋ค๋ฌ๋ฅผ ์ฌ์ฉํด์ผ ํ ๊น์ด๋ค.
์ด์ ๋ฅผ ์์๋ณด๊ธฐ์ํด ๋ค์ ๊ฐ๋ ์ ๋ณด์.
์ฐธ๊ณ ๋ก ์ธํ์ ์ ๋ ฅ์ ์ํ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
const [์ํ๊ฐ, ์ํ๊ฐ ์กฐ์ ํจ์] = React.useState(์ด๊ธฐ์ํ๊ฐ);
function onChange() {
์ํ๊ฐ ์กฐ์ ํจ์();
}
<input name="name" onChange={onChange} value={์ํ๊ฐ}/>
๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ๊ณผ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ
๋จผ์ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ด๋ ๊ฐ๋ ์ ๋ํด ์์๋ณด์.
์ ๊ณต์(๊ฐ๋ฐ์)์ ์ฌ์ฉ์(์ ์ )๊ฐ ์ ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋์ผํ๊ฒ ๋ฌถ๋ ๊ธฐ๋ฒ์ ๋งํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ์์์ ์ ์ธ ๋ฐ ๋ฐํํ ๋ฐ์ดํฐ๋ฅผ HTML์์์๋ ๋์ผํ๊ฒ ๋ณผ ์ ์๊ฒ๋ ํ๋ ๊ฒ์ด๋ค.
๊ทธ๋ฌ๋ฉด ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ด๋?
์ปดํฌ๋ํธ ๋ด์์ '๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ'์ JS์์ HTML๋ก ํ ๋ฐฉํฅ์ผ๋ก๋ง ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
๋๋ฌธ์ ์ญ์ผ๋ก HTML์์ JS๋ก์ ์ง์ ์ ์ธ ๋ฐ์ดํฐ ๊ฐฑ์ ์ ๋ถ๊ฐ๋ฅํ๋ค.
HTML์์ JS๋ก์ ๋ฐ์ดํฐ ๊ฐฑ์ ์ ์ํ๋ค๋ฉด, ์ด๋ฒคํธํจ์(eventListener)๋ฅผ ์จ์ผํ๋ค.
๊ฒฐ๋ก
js์ ๋์ ๋ฐฉ์๊ณผ useState์ ํน์ง์ ์๋ฉด ๊ฒฐ๋ก ์ ๊ฐ๋จํ๋ค.
์๋์ด ์๋๋ ํต์ฌ์ input์ value๋ฅผ ์ํ๊ฐ์ผ๋ก ์ค์ ํ๋์์ ์๋ค.
์ฌ์ฉ์๊ฐ HTML์์ inputํ๊ทธ์ ๋ฌด์ธ๊ฐ ์์ฑํ๋ฉด, value๋ ์์๋ก ์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ณด๊ณ ๋ณํํ๋ค.
๊ทธ๋ฐ๋ฐ value๊ฐ ๋ณํ๋๋ฉด JS์ ์ํ๊ฐ์ด ๋ณํด์ผํ๋๊ฑด๋ฐ,
์ด๋ JS -> HTML ๋จ๋ฐฉํฅ ํ๋ฆ์ ์ด๊ธ๋๋ค.
๋ฐ๋ผ์ ์ด๋ฒคํธํจ์๋ฅผ ํตํด value๋ณ๊ฒฝ์ ๋ฐ๋ฅธ ์ํ๊ฐ์์ ์ ํด์ค์ผํ๋ ๊ฒ์ด๋ค.
input์ value๋ ์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ฐ๋ผ ๋ฐ๋ก๋ฐ๋ก ๋ฐ๋๊ธฐ ๋๋ฌธ์ onChange ์ด๋ฒคํธํจ์๋ฅผ ์ธ ์ ๋ฐ์ ์๋ ์ด์ ๋ค.