๐Ÿ”ง Library/React JS

React์—์„œ input ์ž…๋ ฅ์ด ์•ˆ๋˜๋Š” ๊ฒฐ์ •์ ์ธ ์ด์œ 

jaeyunim 2023. 3. 7. 23:40

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 ์ด๋ฒคํŠธํ•จ์ˆ˜๋ฅผ ์“ธ ์ˆ˜ ๋ฐ–์— ์—†๋Š” ์ด์œ ๋‹ค.