Skip to content

Commit 91048f2

Browse files
committed
docs: update input.md
1 parent 3825c05 commit 91048f2

File tree

1 file changed

+37
-37
lines changed
  • src/content/reference/react-dom/components

1 file changed

+37
-37
lines changed

โ€Žsrc/content/reference/react-dom/components/input.mdโ€Ž

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ title: "<input>"
44

55
<Intro>
66

7-
[๋‚ด์žฅ ๋ธŒ๋ผ์šฐ์ € `<input>` ์ปดํฌ๋„ŒํŠธ](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ํผ ์ž…๋ ฅ<sup>Input</sup>์„ ๋ Œ๋”๋ง ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
7+
[๋‚ด์žฅ ๋ธŒ๋ผ์šฐ์ € `<input>` ์ปดํฌ๋„ŒํŠธ](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ํผ ์ž…๋ ฅ<sup>Input</sup>์„ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
88

99
```js
1010
<input />
@@ -91,8 +91,8 @@ You can [make an input controlled](#controlling-an-input-with-a-state-variable)
9191
#### ์ฃผ์˜ ์‚ฌํ•ญ {/*caveats*/}
9292

9393
- ์ฒดํฌ๋ฐ•์Šค์—๋Š” `value` (๋˜๋Š” `defaultValue`)๊ฐ€ ์•„๋‹Œ `checked` (๋˜๋Š” `defaultChecked`)๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
94-
- ํ…์ŠคํŠธ ์ž…๋ ฅ ์˜์—ญ์€ ๋ฌธ์ž์—ด `value` prop์„ ๋ฐ›์„ ๊ฒฝ์šฐ [์ œ์–ด๋˜๋Š” ๊ฒƒ์œผ๋กœ ์ทจ๊ธ‰](#controlling-an-input-with-a-state-variable)๋ฉ๋‹ˆ๋‹ค.
95-
- ์ฒดํฌ๋ฐ•์Šค ๋˜๋Š” ๋ผ๋””์˜ค ๋ฒ„ํŠผ์ด ๋ถˆ๋ฆฌ์–ธ `checked` prop์„ ๋ฐ›์„ ๊ฒฝ์šฐ [์ œ์–ด๋˜๋Š” ๊ฒƒ์œผ๋กœ ์ทจ๊ธ‰](#controlling-an-input-with-a-state-variable)๋ฉ๋‹ˆ๋‹ค.
94+
- ํ…์ŠคํŠธ ์ž…๋ ฅ ์˜์—ญ์€ ๋ฌธ์ž์—ด `value` Prop์„ ๋ฐ›์„ ๊ฒฝ์šฐ [์ œ์–ด๋˜๋Š” ๊ฒƒ์œผ๋กœ ์ทจ๊ธ‰](#controlling-an-input-with-a-state-variable)๋ฉ๋‹ˆ๋‹ค.
95+
- ์ฒดํฌ๋ฐ•์Šค ๋˜๋Š” ๋ผ๋””์˜ค ๋ฒ„ํŠผ์ด ๋ถˆ๋ฆฌ์–ธ `checked` Prop์„ ๋ฐ›์„ ๊ฒฝ์šฐ [์ œ์–ด๋˜๋Š” ๊ฒƒ์œผ๋กœ ์ทจ๊ธ‰](#controlling-an-input-with-a-state-variable)๋ฉ๋‹ˆ๋‹ค.
9696
- ์ž…๋ ฅ์€ ์ œ์–ด๋˜๋ฉด์„œ ๋™์‹œ์— ๋น„์ œ์–ด๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
9797
- ์ž…๋ ฅ์€ ์ƒ๋ช…์ฃผ๊ธฐ ๋™์•ˆ ์ œ์–ด ๋˜๋Š” ๋น„์ œ์–ด ์ƒํƒœ๋ฅผ ์˜ค๊ฐˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
9898
- ์ œ์–ด๋˜๋Š” ์ž…๋ ฅ์—” ๋ชจ๋‘ ๋ฐฑ์—… ๊ฐ’์„ ๋™๊ธฐ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋Š” `onChange` ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
@@ -103,7 +103,7 @@ You can [make an input controlled](#controlling-an-input-with-a-state-variable)
103103

104104
### ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ์ž…๋ ฅ ํ‘œ์‹œ {/*displaying-inputs-of-different-types*/}
105105

106-
์ž…๋ ฅ์„ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด `<input>` ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ Œ๋”๋ง ํ•˜์„ธ์š”. ๊ธฐ๋ณธ์ ์œผ๋กœ ํ…์ŠคํŠธ ์ž…๋ ฅ์ด ๋ฉ๋‹ˆ๋‹ค. ์ฒดํฌ๋ฐ•์Šค์—๋Š” `type="checkbox"`๋ฅผ, ๋ผ๋””์˜ค ๋ฒ„ํŠผ์—๋Š” `type="radio"` ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ [๋‹ค๋ฅธ ์ž…๋ ฅ ํƒ€์ž…๋“ค ์ค‘์˜ ํ•˜๋‚˜](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#input_types)๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
106+
์ž…๋ ฅ์„ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด `<input>` ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ Œ๋”๋งํ•˜์„ธ์š”. ๊ธฐ๋ณธ์ ์œผ๋กœ ํ…์ŠคํŠธ๋กœ ์ž…๋ ฅ๋ฉ๋‹ˆ๋‹ค. ์ฒดํฌ๋ฐ•์Šค์—๋Š” `type="checkbox"`, ๋ผ๋””์˜ค ๋ฒ„ํŠผ์—๋Š” `type="radio"`๋ฅผ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ [๋‹ค๋ฅธ ์ž…๋ ฅ ์œ ํ˜•๋“ค ์ค‘ ํ•˜๋‚˜](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#input_types)๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
107107

108108
<Sandpack>
109109

@@ -148,11 +148,11 @@ input { margin: 5px; }
148148

149149
---
150150

151-
### ์ž…๋ ฅ์— ๋ผ๋ฒจ ์ œ๊ณตํ•˜๊ธฐ {/*providing-a-label-for-an-input*/}
151+
### ์ž…๋ ฅ์— ๋ ˆ์ด๋ธ” ์ œ๊ณตํ•˜๊ธฐ {/*providing-a-label-for-an-input*/}
152152

153-
์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋“  `<input>` ์€ [`<label>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label) ํƒœ๊ทธ ์•ˆ์— ๋‘๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ•ด๋‹น ๋ผ๋ฒจ์ด ํ•ด๋‹น ์ž…๋ ฅ๊ณผ ์—ฐ๊ด€๋จ์„ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋ผ๋ฒจ์„ ํด๋ฆญํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €๋Š” ์ž…๋ ฅ์— ์ž๋™์ ์œผ๋กœ ํฌ์ปค์Šค๋ฅผ ๋งž์ถฅ๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฐ ๋ฆฌ๋”๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์—ฐ๊ด€๋œ ์ž…๋ ฅ์— ํฌ์ปค์Šค๋ฅผ ๋งž์ถœ ๋•Œ ๋ผ๋ฒจ ์บก์…˜์„ ์ฝ๊ฒŒ ๋˜๋ฏ€๋กœ ์ด ๋ฐฉ์‹์€ ์ ‘๊ทผ์„ฑ์„ ์œ„ํ•ด์„œ๋„ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.
153+
์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋“  `<input>`์€ [`<label>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label) ํƒœ๊ทธ ์•ˆ์— ์กด์žฌํ•˜๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ•ด๋‹น ๋ ˆ์ด๋ธ”์ด ํ•ด๋‹น ์ž…๋ ฅ๊ณผ ์—ฐ๊ด€๋จ์„ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋ ˆ์ด๋ธ”์„ ํด๋ฆญํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €๋Š” ์ž…๋ ฅ์— ์ž๋™์ ์œผ๋กœ ํฌ์ปค์Šค๋ฅผ ๋งž์ถฅ๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฐ ๋ฆฌ๋”๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์—ฐ๊ด€๋œ ์ž…๋ ฅ์— ํฌ์ปค์Šค๋ฅผ ๋งž์ถœ ๋•Œ ๋ ˆ์ด๋ธ” ์บก์…˜์„ ์ฝ๊ฒŒ ๋˜๋ฏ€๋กœ ์ด ๋ฐฉ์‹์€ ์ ‘๊ทผ์„ฑ์„ ์œ„ํ•ด์„œ๋„ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.
154154

155-
`<label>` ์•ˆ์— `<input>` ์„ ๊ฐ์Œ€ ์ˆ˜ ์—†๋‹ค๋ฉด, `<input id>` ์™€ [`<label htmlFor>`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/htmlFor)์— ๋™์ผํ•œ ID๋ฅผ ์ „๋‹ฌํ•ด์„œ ์—ฐ๊ด€์„ฑ์„ ๋ถ€์—ฌํ•˜์„ธ์š”. ํ•œ ์ปดํฌ๋„ŒํŠธ์˜ ์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค ๊ฐ„ ์ถฉ๋Œ์„ ํ”ผํ•˜๋ ค๋ฉด [`useId`](/reference/react/useId)๋กœ ๊ทธ๋Ÿฌํ•œ ID๋ฅผ ์ƒ์„ฑํ•˜์„ธ์š”.
155+
`<label>` ์•ˆ์— `<input>`์„ ๊ฐ์Œ€ ์ˆ˜ ์—†๋‹ค๋ฉด, `<input id>` ์™€ [`<label htmlFor>`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/htmlFor)์— ๋™์ผํ•œ ID๋ฅผ ์ „๋‹ฌํ•ด์„œ ์—ฐ๊ด€์„ฑ์„ ๋ถ€์—ฌํ•˜์„ธ์š”. ํ•œ ์ปดํฌ๋„ŒํŠธ์˜ ์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค ๊ฐ„ ์ถฉ๋Œ์„ ํ”ผํ•˜๋ ค๋ฉด [`useId`](/reference/react/useId)๋กœ ๊ทธ๋Ÿฌํ•œ ID๋ฅผ ์ƒ์„ฑํ•˜์„ธ์š”.
156156

157157
<Sandpack>
158158

@@ -183,9 +183,9 @@ input { margin: 5px; }
183183

184184
---
185185

186-
### ์ž…๋ ฅ์— ์ดˆ๊นƒ๊ฐ’ ์ œ๊ณตํ•˜๊ธฐ {/*providing-an-initial-value-for-an-input*/}
186+
### ์ž…๋ ฅ์— ์ดˆ๊ธฐ๊ฐ’ ์ œ๊ณตํ•˜๊ธฐ {/*providing-an-initial-value-for-an-input*/}
187187

188-
์ž…๋ ฅ์˜ ์ดˆ๊นƒ๊ฐ’์€ ์„ ํƒ์ ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ…์ŠคํŠธ ์ž…๋ ฅ์„ ์œ„ํ•œ `defaultValue` ๋ฌธ์ž์—ด๋กœ ์ „๋‹ฌํ•˜์„ธ์š”. ๋Œ€์‹  ์ฒดํฌ๋ฐ•์Šค์™€ ๋ผ๋””์˜ค ๋ฒ„ํŠผ์€ `defaultChecked` ๋ถˆ๋ฆฌ์–ธ์œผ๋กœ ์ดˆ๊นƒ๊ฐ’์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
188+
์ž…๋ ฅ์˜ ์ดˆ๊ธฐ๊ฐ’์€ ์„ ํƒ์ ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ…์ŠคํŠธ ์ž…๋ ฅ์„ ์œ„ํ•œ `defaultValue` ๋ฌธ์ž์—ด์„ ์ „๋‹ฌํ•˜์„ธ์š”. ๋Œ€์‹  ์ฒดํฌ๋ฐ•์Šค์™€ ๋ผ๋””์˜ค ๋ฒ„ํŠผ์€ `defaultChecked` ๋ถˆ๋ฆฌ์–ธ์œผ๋กœ ์ดˆ๊ธฐ๊ฐ’์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
189189

190190
<Sandpack>
191191

@@ -237,7 +237,7 @@ input { margin: 5px; }
237237

238238
### ํผ ์ œ์ถœ ์‹œ ์ž…๋ ฅ ๊ฐ’ ์ฝ๊ธฐ {/*reading-the-input-values-when-submitting-a-form*/}
239239

240-
์ž…๋ ฅ๊ณผ [`<button type="submit">`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button) ๋ฐ”๊นฅ์„ [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form) ์œผ๋กœ ๊ฐ์‹ธ๋ฉด ๋ฒ„ํŠผ์„ ํด๋ฆญํ–ˆ์„ ๋•Œ `<form onSubmit>` ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ธŒ๋ผ์šฐ์ €๋Š” ํ˜„์žฌ URL์— ํผ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ ํ›„ ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•˜๋ฉฐ ์ด๋Ÿฌํ•œ ๋™์ž‘์€ `e.preventDefault()`๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํผ ๋ฐ์ดํ„ฐ๋Š” [`new FormData(e.target)`](https://developer.mozilla.org/en-US/docs/Web/API/FormData)๋กœ ์ฝ์œผ์„ธ์š”.
240+
์ž…๋ ฅ๊ณผ [`<button type="submit">`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button) ๋ฐ”๊นฅ์„ [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form)์œผ๋กœ ๊ฐ์‹ธ๋ฉด ๋ฒ„ํŠผ์„ ํด๋ฆญํ–ˆ์„ ๋•Œ `<form onSubmit>` ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ธŒ๋ผ์šฐ์ €๋Š” ํ˜„์žฌ URL์— ํผ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ ํ›„ ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•˜๋ฉฐ, ์ด๋Ÿฌํ•œ ๋™์ž‘์€ `e.preventDefault()`๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํผ ๋ฐ์ดํ„ฐ๋Š” [`new FormData(e.target)`](https://developer.mozilla.org/en-US/docs/Web/API/FormData)๋กœ ์ฝ์œผ์„ธ์š”.
241241
<Sandpack>
242242

243243
```js
@@ -297,26 +297,26 @@ input { margin: 5px; }
297297

298298
<Pitfall>
299299

300-
๊ธฐ๋ณธ์ ์œผ๋กœ `<form>` ๋‚ด๋ถ€์˜ *์–ด๋А* `<button>`์ด๋“  ํผ์„ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค. ๋œป๋ฐ–์ธ๊ฐ€์š”? ์ปค์Šคํ…€ Button React ์ปดํฌ๋„ŒํŠธ์˜ ๊ฒฝ์šฐ `<button>` ๋Œ€์‹  [`<button type="button">`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/button) ๋ฐ˜ํ™˜์„ ๊ณ ๋ คํ•˜์„ธ์š”. ๋ช…์‹œ์„ฑ์„ ๋ถ€์—ฌํ•˜๊ธฐ ์œ„ํ•ด ํผ ์ œ์ถœ์šฉ ๋ฒ„ํŠผ์œผ๋กœ๋Š” `<button type="submit">`์„ ์‚ฌ์šฉํ•˜์„ธ์š”.
300+
๊ธฐ๋ณธ์ ์œผ๋กœ `<form>` ๋‚ด๋ถ€์˜ *์–ด๋А* `<button>`์ด๋“  ํผ์„ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค. ๋œป๋ฐ–์ธ๊ฐ€์š”? ์ปค์Šคํ…€ `Button` React ์ปดํฌ๋„ŒํŠธ์˜ ๊ฒฝ์šฐ `<button>` ๋Œ€์‹  [`<button type="button">`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/button) ๋ฐ˜ํ™˜์„ ๊ณ ๋ คํ•˜์„ธ์š”. ๋ช…์‹œ์„ฑ์„ ๋ถ€์—ฌํ•˜๊ธฐ ์œ„ํ•ด ํผ ์ œ์ถœ์šฉ ๋ฒ„ํŠผ์œผ๋กœ๋Š” `<button type="submit">`์„ ์‚ฌ์šฉํ•˜์„ธ์š”.
301301

302302
</Pitfall>
303303

304304
---
305305

306306
### State ๋ณ€์ˆ˜๋กœ ์ž…๋ ฅ ์ œ์–ดํ•˜๊ธฐ {/*controlling-an-input-with-a-state-variable*/}
307307

308-
`<input />` ๊ณผ ๊ฐ™์€ ์ž…๋ ฅ์€ *์ œ์–ด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.* `<input defaultValue="Initial text" />`์™€ ๊ฐ™์€ [์ดˆ๊ธฐ๊ฐ’์„ ์ „๋‹ฌ](#providing-an-initial-value-for-an-input)ํ•œ๋Œ€๋„ JSX๋Š” ๋‹น์žฅ์˜ ๊ฐ’์„ ์ œ์–ดํ•˜์ง€ ์•Š๊ณ  ์ดˆ๊นƒ๊ฐ’๋งŒ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
308+
`<input />`๊ณผ ๊ฐ™์€ ์ž…๋ ฅ์€ *์ œ์–ด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.* `<input defaultValue="Initial text" />`์™€ ๊ฐ™์€ [์ดˆ๊ธฐ๊ฐ’์„ ์ „๋‹ฌ](#providing-an-initial-value-for-an-input)ํ•œ๋Œ€๋„ JSX๋Š” ๋‹น์žฅ์˜ ๊ฐ’์„ ์ œ์–ดํ•˜์ง€ ์•Š๊ณ  ์ดˆ๊ธฐ๊ฐ’๋งŒ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
309309

310310
**_์ œ์–ด๋˜๋Š”_ ์ž…๋ ฅ์„ ๋ Œ๋”๋งํ•˜๋ ค๋ฉด, `value` (๋˜๋Š” ์ฒดํฌ๋ฐ•์Šค์™€ ๋ผ๋””์˜ค์—๋Š” `checked`) Prop ์„ ์ „๋‹ฌํ•˜์„ธ์š”.** React๋Š” ์ „๋‹ฌํ•œ `value`๋ฅผ ํ•ญ์ƒ ๊ฐ–๋„๋ก ์ž…๋ ฅ์— ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ [State ๋ณ€์ˆ˜](/reference/react/useState)๋ฅผ ์„ ์–ธํ•˜์—ฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
311311

312312
```js {2,6,7}
313313
function Form() {
314-
const [firstName, setFirstName] = useState(''); // state ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.
314+
const [firstName, setFirstName] = useState(''); // State ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.
315315
// ...
316316
return (
317317
<input
318-
value={firstName} // ์ž…๋ ฅ ๊ฐ’์ด state ๋ณ€์ˆ˜์™€ ์ผ์น˜ํ•˜๋„๋ก ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค.
319-
onChange={e => setFirstName(e.target.value)} // input์„ ํŽธ์ง‘ํ•  ๋•Œ๋งˆ๋‹ค state ๋ณ€์ˆ˜๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
318+
value={firstName} // ์ž…๋ ฅ ๊ฐ’์ด State ๋ณ€์ˆ˜์™€ ์ผ์น˜ํ•˜๋„๋ก ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค.
319+
onChange={e => setFirstName(e.target.value)} // ์ž…๋ ฅ์„ ํŽธ์ง‘ํ•  ๋•Œ๋งˆ๋‹ค State ๋ณ€์ˆ˜๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
320320
/>
321321
);
322322
}
@@ -358,7 +358,7 @@ function Form() {
358358
</button>
359359
```
360360
361-
์ œ์–ด๋˜๋Š” ์ปดํฌ๋„ŒํŠธ์— ์ „๋‹ฌ๋˜๋Š” `value`๋Š” `undefined` ๋‚˜ `null`์ด ๋˜์–ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์˜ `firstName` ํ•„๋“œ์ฒ˜๋Ÿผ ์ดˆ๊นƒ๊ฐ’์„ ๋น„์›Œ๋‘์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ state ๋ณ€์ˆ˜๋ฅผ ๋นˆ ๋ฌธ์ž์—ด(`''`)๋กœ ์ดˆ๊ธฐํ™” ํ•˜์„ธ์š”.
361+
์ œ์–ด๋˜๋Š” ์ปดํฌ๋„ŒํŠธ์— ์ „๋‹ฌ๋˜๋Š” `value`๋Š” `undefined`๋‚˜ `null`์ด ๋˜์–ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์˜ `firstName` ํ•„๋“œ์ฒ˜๋Ÿผ ์ดˆ๊ธฐ๊ฐ’์„ ๋น„์›Œ๋‘์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ State ๋ณ€์ˆ˜๋ฅผ ๋นˆ ๋ฌธ์ž์—ด(`''`)๋กœ ์ดˆ๊ธฐํ™” ํ•˜์„ธ์š”.
362362
363363
<Sandpack>
364364
@@ -410,7 +410,7 @@ p { font-weight: bold; }
410410
411411
<Pitfall>
412412
413-
**์ž…๋ ฅ์— `onChange` ์—†์ด `value`๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ํ•ด๋‹น ์ž…๋ ฅ์— ํƒ€์ดํ•‘์„ ํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.** `value`๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ์ž…๋ ฅ์„ ์ œ์–ดํ•˜๋ฉด ํ•ญ์ƒ ํ•ด๋‹น value๋ฅผ ๊ฐ€์ง€๋„๋ก *๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค*. ๊ทธ๋Ÿฌ๋ฏ€๋กœ state ๋ณ€์ˆ˜๋ฅผ `value`๋กœ ์ „๋‹ฌํ•ด๋„ `onChange` ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๋‚ด์—์„œ ํ•ด๋‹น state ๋ณ€์ˆ˜๋ฅผ ๋™๊ธฐ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š์œผ๋ฉด React๋Š” ํ‚ค๋ณด๋“œ๋ฅผ ๋ˆ„๋ฅผ ๋•Œ๋งˆ๋‹ค ์ž…๋ ฅ์„ ์ฒ˜์Œ ์ง€์ •ํ•œ `value`๋กœ ๋˜๋Œ๋ฆฌ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
413+
**์ž…๋ ฅ์— `onChange` ์—†์ด `value`๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ํ•ด๋‹น ์ž…๋ ฅ์— ํƒ€์ดํ•‘์„ ํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.** `value`๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ์ž…๋ ฅ์„ ์ œ์–ดํ•˜๋ฉด ํ•ญ์ƒ ํ•ด๋‹น ๊ฐ’์„ ๊ฐ€์ง€๋„๋ก *๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค*. ๊ทธ๋Ÿฌ๋ฏ€๋กœ State ๋ณ€์ˆ˜๋ฅผ `value`๋กœ ์ „๋‹ฌํ•ด๋„ `onChange` ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๋‚ด์—์„œ ํ•ด๋‹น State ๋ณ€์ˆ˜๋ฅผ ๋™๊ธฐ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š์œผ๋ฉด React๋Š” ํ‚ค๋ณด๋“œ๋ฅผ ๋ˆ„๋ฅผ ๋•Œ๋งˆ๋‹ค ์ž…๋ ฅ์„ ์ฒ˜์Œ ์ง€์ •ํ•œ `value`๋กœ ๋˜๋Œ๋ฆฌ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
414414
415415
</Pitfall>
416416
@@ -468,7 +468,7 @@ function SignupForm() {
468468
469469
### ํ…์ŠคํŠธ ์ž…๋ ฅ์— ํƒ€์ดํ•‘์„ ํ•ด๋„ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค {/*my-text-input-doesnt-update-when-i-type-into-it*/}
470470
471-
`onChange` ์—†์ด `value`๋งŒ ์ „๋‹ฌํ•˜์—ฌ ์ž…๋ ฅ์„ ๋ Œ๋”๋งํ•˜๋ฉด ์ฝ˜์†”์— ์—๋Ÿฌ๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
471+
`onChange` ์—†์ด `value`๋งŒ ์ „๋‹ฌํ•˜์—ฌ ์ž…๋ ฅ์„ ๋ Œ๋”๋งํ•˜๋ฉด ์ฝ˜์†”์— ์˜ค๋ฅ˜๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
472472
473473
```js
474474
// ๐Ÿ”ด ๋ฒ„๊ทธ: ์ œ์–ด๋˜๋Š” `<input>`์— `onChange` ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
@@ -477,25 +477,25 @@ function SignupForm() {
477477
478478
<ConsoleBlock level="error">
479479
480-
ํผ ํ•„๋“œ์— `onChange` ํ•ธ๋“ค๋Ÿฌ ์—†์ด `value` prop๋งŒ ์ „๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ฝ๊ธฐ ์ „์šฉ ํ•„๋“œ๋ฅผ ๋ Œ๋”๋งํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ•„๋“œ๊ฐ€ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ `defaultValue`๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ `onChange` ๋˜๋Š” `readOnly`๋ฅผ ์„ค์ •ํ•˜์„ธ์š”.
480+
ํผ ํ•„๋“œ์— `onChange` ํ•ธ๋“ค๋Ÿฌ ์—†์ด `value` Prop๋งŒ ์ „๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ฝ๊ธฐ ์ „์šฉ ํ•„๋“œ๋ฅผ ๋ Œ๋”๋งํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ•„๋“œ๊ฐ€ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ `defaultValue`๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ `onChange` ๋˜๋Š” `readOnly`๋ฅผ ์„ค์ •ํ•˜์„ธ์š”.
481481
482482
</ConsoleBlock>
483483
484-
์—๋Ÿฌ ๋ฉ”์‹œ์ง€๊ฐ€ ์ œ์•ˆํ•˜๋“ฏ [*์ดˆ๊นƒ๊ฐ’*๋งŒ ์ง€์ •](#providing-an-initial-value-for-an-input)ํ•˜๋ ค๋ฉด `defaultVallue`๋ฅผ ๋Œ€์‹  ์ „๋‹ฌํ•˜์„ธ์š”.
484+
์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์ œ์•ˆํ•˜๋“ฏ [*์ดˆ๊ธฐ๊ฐ’*๋งŒ ์ง€์ •](#providing-an-initial-value-for-an-input)ํ•˜๋ ค๋ฉด `defaultValue`๋ฅผ ๋Œ€์‹  ์ „๋‹ฌํ•˜์„ธ์š”.
485485
486486
```js
487-
// โœ… ์ข‹์€ ์˜ˆ: ์ œ์–ด๋˜์ง€ ์•Š๋Š” `<input>`์— ์ดˆ๊นƒ๊ฐ’ ์ „๋‹ฌ
487+
// โœ… ์ข‹์€ ์˜ˆ: ์ œ์–ด๋˜์ง€ ์•Š๋Š” `<input>`์— ์ดˆ๊ธฐ๊ฐ’ ์ „๋‹ฌ
488488
<input defaultValue={something} />
489489
```
490490
491-
[input์„ state ๋ณ€์ˆ˜๋กœ ์ œ์–ด](#controlling-an-input-with-a-state-variable)ํ•˜๋ ค๋ฉด `onChange` ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ง€์ •ํ•˜์„ธ์š”.
491+
[์ž…๋ ฅ์„ State ๋ณ€์ˆ˜๋กœ ์ œ์–ด](#controlling-an-input-with-a-state-variable)ํ•˜๋ ค๋ฉด `onChange` ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ง€์ •ํ•˜์„ธ์š”.
492492
493493
```js
494494
// โœ… ์ข‹์€ ์˜ˆ: ์ œ์–ด๋˜๋Š” `<input>`์— `onChange` ์ „๋‹ฌ
495495
<input value={something} onChange={e => setSomething(e.target.value)} />
496496
```
497497
498-
๊ฐ’์ด ์˜๋„์ ์œผ๋กœ ์ฝ๊ธฐ ์ „์šฉ์ด๋ผ๋ฉด ์—๋Ÿฌ๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด `readOnly` prop์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”.
498+
๊ฐ’์ด ์˜๋„์ ์œผ๋กœ ์ฝ๊ธฐ ์ „์šฉ์ด๋ผ๋ฉด ์˜ค๋ฅ˜๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด `readOnly` Prop์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”.
499499
500500
```js
501501
// โœ… ์ข‹์€ ์˜ˆ: ์ œ์–ด๋˜๋Š” ์ฝ๊ธฐ ์ „์šฉ `<input>`์— `onChange` ์ƒ๋žต
@@ -515,18 +515,18 @@ function SignupForm() {
515515
516516
<ConsoleBlock level="error">
517517
518-
ํผ ํ•„๋“œ์— `onChange` ํ•ธ๋“ค๋Ÿฌ ์—†์ด `checked` prop์„ ์ „๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ฝ๊ธฐ ์ „์šฉ ํ•„๋“œ๋ฅผ ๋ Œ๋”๋งํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ•„๋“œ๊ฐ€ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ `defaultChecked`๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ `onChange` ๋˜๋Š” `readOnly`๋ฅผ ์„ค์ •ํ•˜์„ธ์š”.
518+
ํผ ํ•„๋“œ์— `onChange` ํ•ธ๋“ค๋Ÿฌ ์—†์ด `checked` Prop์„ ์ „๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ฝ๊ธฐ ์ „์šฉ ํ•„๋“œ๋ฅผ ๋ Œ๋”๋งํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ•„๋“œ๊ฐ€ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ `defaultChecked`๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ `onChange` ๋˜๋Š” `readOnly`๋ฅผ ์„ค์ •ํ•˜์„ธ์š”.
519519
520520
</ConsoleBlock>
521521
522-
์—๋Ÿฌ ๋ฉ”์‹œ์ง€๊ฐ€ ์ œ์•ˆํ•˜๋“ฏ [*์ดˆ๊นƒ๊ฐ’*๋งŒ ์ง€์ •](#providing-an-initial-value-for-an-input)ํ•˜๋ ค๋ฉด `defaultChecked`๋ฅผ ๋Œ€์‹  ์ „๋‹ฌํ•˜์„ธ์š”.
522+
์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์ œ์•ˆํ•˜๋“ฏ [*์ดˆ๊ธฐ๊ฐ’*๋งŒ ์ง€์ •](#providing-an-initial-value-for-an-input)ํ•˜๋ ค๋ฉด `defaultChecked`๋ฅผ ๋Œ€์‹  ์ „๋‹ฌํ•˜์„ธ์š”.
523523
524524
```js
525-
// โœ… ์ข‹์€ ์˜ˆ: ์ œ์–ด๋˜์ง€ ์•Š๋Š” ์ฒดํฌ๋ฐ•์Šค์— ์ดˆ๊นƒ๊ฐ’ ์ „๋‹ฌ
525+
// โœ… ์ข‹์€ ์˜ˆ: ์ œ์–ด๋˜์ง€ ์•Š๋Š” ์ฒดํฌ๋ฐ•์Šค์— ์ดˆ๊ธฐ๊ฐ’ ์ „๋‹ฌ
526526
<input type="checkbox" defaultChecked={something} />
527527
```
528528
529-
[์ฒดํฌ๋ฐ•์Šค๋ฅผ state ๋ณ€์ˆ˜๋กœ ์ œ์–ด](#controlling-an-input-with-a-state-variable)ํ•˜๋ ค๋ฉด `onChange` ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ง€์ •ํ•˜์„ธ์š”.
529+
[์ฒดํฌ๋ฐ•์Šค๋ฅผ State ๋ณ€์ˆ˜๋กœ ์ œ์–ด](#controlling-an-input-with-a-state-variable)ํ•˜๋ ค๋ฉด `onChange` ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ง€์ •ํ•˜์„ธ์š”.
530530
531531
```js
532532
// โœ… ์ข‹์€ ์˜ˆ: ์ œ์–ด๋˜๋Š” ์ฒดํฌ๋ฐ•์Šค์— onChange ์ „๋‹ฌ
@@ -539,7 +539,7 @@ function SignupForm() {
539539
540540
</Pitfall>
541541
542-
์ฒดํฌ๋ฐ•์Šค๊ฐ€ ์˜๋„์ ์œผ๋กœ ์ฝ๊ธฐ ์ „์šฉ์ด๋ผ๋ฉด ์—๋Ÿฌ๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด `readOnly` prop์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”.
542+
์ฒดํฌ๋ฐ•์Šค๊ฐ€ ์˜๋„์ ์œผ๋กœ ์ฝ๊ธฐ ์ „์šฉ์ด๋ผ๋ฉด ์˜ค๋ฅ˜๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด `readOnly` Prop์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”.
543543
544544
```js
545545
// โœ… ์ข‹์€ ์˜ˆ: ์ œ์–ด๋˜๋Š” ์ฝ๊ธฐ ์ „์šฉ input์— onChange ์ƒ๋žต
@@ -548,15 +548,15 @@ function SignupForm() {
548548
549549
---
550550
551-
### ํ‚ค๋ณด๋“œ๋ฅผ ๋ˆ„๋ฅผ ๋•Œ๋งˆ๋‹ค ์ž…๋ ฅ ์ปค์„œ๊ฐ€ input์˜ ์ฒ˜์Œ์œผ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค {/*my-input-caret-jumps-to-the-beginning-on-every-keystroke*/}
551+
### ํ‚ค๋ณด๋“œ๋ฅผ ๋ˆ„๋ฅผ ๋•Œ๋งˆ๋‹ค ์ž…๋ ฅ ์ปค์„œ๊ฐ€ ์ž…๋ ฅ์˜ ์ฒ˜์Œ์œผ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค {/*my-input-caret-jumps-to-the-beginning-on-every-keystroke*/}
552552
553-
[input์„ ์ œ์–ด](#controlling-an-input-with-a-state-variable)ํ•  ๊ฒฝ์šฐ `onChange` ์•ˆ์—์„œ state ๋ณ€์ˆ˜๋ฅผ DOM์—์„œ ๋ฐ›์•„์˜จ input ๊ฐ’์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
553+
[์ž…๋ ฅ์„ ์ œ์–ด](#controlling-an-input-with-a-state-variable)ํ•  ๊ฒฝ์šฐ `onChange` ์•ˆ์—์„œ State ๋ณ€์ˆ˜๋ฅผ DOM์—์„œ ๋ฐ›์•„์˜จ ์ž…๋ ฅ ๊ฐ’์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
554554
555-
state ๋ณ€์ˆ˜๋Š” `e.target.value` (ํ˜น์€ ์ฒดํฌ๋ฐ•์Šค์—์„œ๋Š” `e.target.checked`) ์™ธ์˜ ๊ฐ’์œผ๋กœ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
555+
State ๋ณ€์ˆ˜๋Š” `e.target.value` (ํ˜น์€ ์ฒดํฌ๋ฐ•์Šค์—์„œ๋Š” `e.target.checked`) ์™ธ์˜ ๊ฐ’์œผ๋กœ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
556556
557557
```js
558558
function handleChange(e) {
559-
// ๐Ÿ”ด ๋ฒ„๊ทธ: input์„ e.target.value ์™ธ์˜ ๊ฐ’์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
559+
// ๐Ÿ”ด ๋ฒ„๊ทธ: ์ž…๋ ฅ์„ `e.target.value` ์™ธ์˜ ๊ฐ’์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
560560
setFirstName(e.target.value.toUpperCase());
561561
}
562562
```
@@ -565,7 +565,7 @@ function handleChange(e) {
565565
566566
```js
567567
function handleChange(e) {
568-
// ๐Ÿ”ด ๋ฒ„๊ทธ: input์„ ๋น„๋™๊ธฐ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
568+
// ๐Ÿ”ด ๋ฒ„๊ทธ: ์ž…๋ ฅ์„ ๋น„๋™๊ธฐ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
569569
setTimeout(() => {
570570
setFirstName(e.target.value);
571571
}, 100);
@@ -576,22 +576,22 @@ function handleChange(e) {
576576
577577
```js
578578
function handleChange(e) {
579-
// โœ… ์ œ์–ด๋˜๋Š” input์„ e.target.value๋กœ ๋™๊ธฐ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
579+
// โœ… ์ œ์–ด๋˜๋Š” ์ž…๋ ฅ์„ `e.target.value`๋กœ ๋™๊ธฐ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
580580
setFirstName(e.target.value);
581581
}
582582
```
583583
584-
์ด ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ํ‚ค๋ณด๋“œ๋ฅผ ๋ˆ„๋ฅผ ๋•Œ๋งˆ๋‹ค input์ด DOM์—์„œ ์ œ๊ฑฐ๋œ ํ›„ ๋‹ค์‹œ ์ถ”๊ฐ€๋˜๊ณ  ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ˆ˜๋กœ ๋ฆฌ๋ Œ๋”๋ง๋งˆ๋‹ค [state๋ฅผ ์žฌ์„ค์ •](/learn/preserving-and-resetting-state)ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ๋Š” ํ˜„์ƒ์ž…๋‹ˆ๋‹ค. ๊ฐ€๋ น input์ด๋‚˜ input์˜ ๋ถ€๋ชจ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋งค๋ฒˆ ๋‹ค๋ฅธ `key` ์–ดํŠธ๋ฆฌ๋ทฐํŠธ๋ฅผ ๋ฐ›๊ฑฐ๋‚˜ ์ปดํฌ๋„ŒํŠธ ํ•จ์ˆ˜ ์ •์˜๋ฅผ ์ค‘์ฒฉ์‹œํ‚ค๋Š” ๊ฒฝ์šฐ(์ด๋Š” ์ง€์›๋˜์ง€ ์•Š์œผ๋ฉฐ '๋‚ด๋ถ€' ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ•ญ์ƒ ๋‹ค๋ฅธ ํŠธ๋ฆฌ๋กœ ๊ฐ„์ฃผ๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค)์— ํ•ด๋‹น ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
584+
์ด ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ํ‚ค๋ณด๋“œ๋ฅผ ๋ˆ„๋ฅผ ๋•Œ๋งˆ๋‹ค ์ž…๋ ฅ์ด DOM์—์„œ ์ œ๊ฑฐ๋œ ํ›„ ๋‹ค์‹œ ์ถ”๊ฐ€๋˜๊ณ  ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ˆ˜๋กœ ๋ฆฌ๋ Œ๋”๋ง๋งˆ๋‹ค [State๋ฅผ ์žฌ์„ค์ •](/learn/preserving-and-resetting-state)ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ๋Š” ํ˜„์ƒ์ž…๋‹ˆ๋‹ค. ๊ฐ€๋ น ์ž…๋ ฅ์ด๋‚˜ ์ž…๋ ฅ์˜ ๋ถ€๋ชจ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋งค๋ฒˆ ๋‹ค๋ฅธ `key` ์–ดํŠธ๋ฆฌ๋ทฐํŠธ๋ฅผ ๋ฐ›๊ฑฐ๋‚˜ ์ปดํฌ๋„ŒํŠธ ํ•จ์ˆ˜ ์ •์˜๋ฅผ ์ค‘์ฒฉ์‹œํ‚ค๋Š” ๊ฒฝ์šฐ(์ด๋Š” ์ง€์›๋˜์ง€ ์•Š์œผ๋ฉฐ '๋‚ด๋ถ€' ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ•ญ์ƒ ๋‹ค๋ฅธ ํŠธ๋ฆฌ๋กœ ๊ฐ„์ฃผ๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค)์— ํ•ด๋‹น ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
585585
586586
---
587587
588-
### ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋‚ฉ๋‹ˆ๋‹ค. "A component is changing an uncontrolled input to be controlled(์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ œ์–ด๋˜์ง€ ์•Š๋Š” input์„ ์ œ์–ด ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค)" {/*im-getting-an-error-a-component-is-changing-an-uncontrolled-input-to-be-controlled*/}
588+
### ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋‚ฉ๋‹ˆ๋‹ค. "A component is changing an uncontrolled input to be controlled(์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ œ์–ด๋˜์ง€ ์•Š๋Š” ์ž…๋ ฅ์„ ์ œ์–ด ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค)" {/*im-getting-an-error-a-component-is-changing-an-uncontrolled-input-to-be-controlled*/}
589589
590590
591591
์ปดํฌ๋„ŒํŠธ์— `value`๋ฅผ ์ œ๊ณตํ•  ๊ฒฝ์šฐ ๋ฐ˜๋“œ์‹œ ์ƒ๋ช…์ฃผ๊ธฐ ๋‚ด๋‚ด ๋ฌธ์ž์—ด ํƒ€์ž…์œผ๋กœ ๋‚จ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
592592
593593
React๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋น„์ œ์–ดํ•  ๊ฒƒ์ธ์ง€ ์ œ์–ดํ•  ๊ฒƒ์ธ์ง€ ์˜๋„๋ฅผ ์•Œ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜์Œ์—” `value={undefined}`๋ฅผ ์ „๋‹ฌํ–ˆ๋‹ค๊ฐ€ ๋‚˜์ค‘์— ๋‹ค์‹œ `value="some string"`์„ ์ „๋‹ฌํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์ œ์–ด๋˜๋Š” ์ปดํฌ๋„ŒํŠธ๋Š” ํ•ญ์ƒ `null`์ด๋‚˜ `undefined`๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž์—ด `value`๋ฅผ ๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
594594
595-
value๊ฐ€ API๋‚˜ state ๋ณ€์ˆ˜์—์„œ ์˜จ๋‹ค๋ฉด `null`์ด๋‚˜ `undefined`๋กœ ์ดˆ๊ธฐํ™”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿด ๊ฒฝ์šฐ ๋นˆ ๋ฌธ์ž์—ด(`''`)์„ ์ดˆ๊นƒ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ `value`๊ฐ€ ๋ฌธ์ž์—ด์ž„์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด `value={someValue ?? ''}`๋ฅผ ์ „๋‹ฌํ•˜์„ธ์š”.
595+
`value`๊ฐ€ API๋‚˜ state ๋ณ€์ˆ˜์—์„œ ์˜จ๋‹ค๋ฉด `null`์ด๋‚˜ `undefined`๋กœ ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿด ๊ฒฝ์šฐ ๋นˆ ๋ฌธ์ž์—ด(`''`)์„ ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ `value`๊ฐ€ ๋ฌธ์ž์—ด์ž„์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด `value={someValue ?? ''}`๋ฅผ ์ „๋‹ฌํ•˜์„ธ์š”.
596596
597597
๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ฒดํฌ๋ฐ•์Šค์— `checked`๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒฝ์šฐ ๋ถˆ๋ฆฌ์–ธ์ž„์„ ๋ณด์žฅํ•˜์„ธ์š”.

0 commit comments

Comments
ย (0)