⊗jsrtPmFmsAIB 70 of 112 menu

React에서 입력 필드를 배열에 바인딩하기

상태에 notes 배열이 저장되어 있다고 가정합시다:

function App() { const [notes, setNotes] = useState([1, 2, 3]); return <div> </div>; }

또한 배열 요소의 합을 구하는 헬퍼 함수가 있다고 가정합시다:

function getSum(arr) { let sum = 0; for (const elem of arr) { sum += +elem; } return sum; } function App() { ... }

우리 상태 배열의 요소 합계를 찾아서 해당 헬퍼 함수를 사용하여 출력해 봅시다:

function App() { const [notes, setNotes] = useState([1, 2, 3]); return <div> {getSum(notes)} </div>; }

이제 세 개의 입력 필드를 만들고 각 입력 필드의 value에 배열의 요소 중 하나를 넣어 봅시다:

function App() { const [notes, setNotes] = useState([1, 2, 3]); return <div> <input value={notes[0]} /> <input value={notes[1]} /> <input value={notes[2]} /> {getSum(notes)} </div>; }

이제 입력 필드에 onChange 이벤트를 추가해 봅시다. 이때 하나의 공통 이벤트 핸들러 함수를 만듭니다:

function App() { const [notes, setNotes] = useState([1, 2, 3]); function changeHandler(index, event) { // 공통 이벤트 핸들러 함수 } return <div> <input value={notes[0]} onChange={event => changeHandler(0, event)} /> <input value={notes[1]} onChange={event => changeHandler(1, event)} /> <input value={notes[2]} onChange={event => changeHandler(2, event)} /> {getSum(notes)} </div>; }

보시다시피, changeHandler 함수는 첫 번째 매개변수로 해당 입력 필드가 편집하는 배열 요소의 인덱스를 받습니다.

이 인덱스를 사용하여 배열 요소를 입력 필드의 내용으로 바꿀 수 있습니다.

이를 구현해 봅시다:

function changeHandler(index, event) { setNotes([...notes.slice(0, index), event.target.value, ...notes.slice(index + 1)]); }

이제 어떤 입력 필드든 편집할 수 있으며, 배열이 반응적으로 변경되고 그에 따라 요소들의 합계가 다시 계산됩니다.

전체 코드를 한데 모아 봅시다:

function App() { const [notes, setNotes] = useState([1, 2, 3]); function changeHandler(index, event) { setNotes([...notes.slice(0, index), event.target.value, ...notes.slice(index + 1)]); } return <div> <input value={notes[0]} onChange={event => changeHandler(0, event)} /> <input value={notes[1]} onChange={event => changeHandler(1, event)} /> <input value={notes[2]} onChange={event => changeHandler(2, event)} /> {getSum(notes)} </div>; }

입력 필드가 반복문에서 생성되도록 할 수도 있습니다:

function App() { const [notes, setNotes] = useState([1, 2, 3]); function changeHandler(index, event) { setNotes([...notes.slice(0, index), event.target.value, ...notes.slice(index + 1)]); } const result = notes.map((note, index) => { return <input key={index} value={note} onChange={event => changeHandler(index, event)} />; }); return <div> {result} {getSum(notes)} </div>; }

다음 배열이 주어져 있습니다:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

이 배열 요소들의 산술 평균을 화면에 출력하세요. 반복문을 사용하여 요소를 편집할 수 있는 입력 필드를 만드세요.

한국어
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақКыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
우리는 웹사이트 운영, 분석 및 개인화를 위해 쿠키를 사용합니다. 데이터 처리는 개인정보 처리방침에 따라 이루어집니다.
모두 수락 설정 거부