앞서 작업한 input 컴포넌트에 이어서 이번에는 여러개의 input 의 값들의 상태를 관리했다.
onchcnge 함수를 여러개 만드는 것 보다 아래에 객체를 생성하여 여러개의 input 을 관리하는 방법의 코드를 작성하였다.
import React ,{useState} from 'react';
function Inputs() {
const [text, setText] = useState({
num:'',
nickname:'',
});
const { num, nickname } = text; // 비구조화 할당을 통해 값 추출
console.log({num})
const change = (e) => {
const { value, name} = e.target; // 우선 e.target 에서 name 과 value 를 추출
setText({
...text, // 기존의 input 객체를 복사한 뒤
[name] : value // name 키를 가진 값을 value 로 설정
});
console.log({num});
console.log({nickname});
};
const reset = () => {
setText({
num: '',
nickname: '',
});
};
return(
<>
<input onChange={change} name="num" value={num}></input>
<input onChange={change} name="nickname" value={nickname}></input>
<button onClick={reset}>초기화</button>
<div>
<b>이름:{num}<br/>닉네임:{nickname}</b>
</div>
</>
);
}
export default Inputs;
중요포인트
1. 객체를 생성하고 비구조화 할당을 통해 값을 추출한다
2. 온체인지 함수 속에 e.target 에서 name 과 value 를 추출한다.
3. ...스프레드함수로 초기 객체를 복사하여 가져온다 ( 불변성을 지키기 위해)
4, 마지막으로 네임으로 받아온 객체의 메소드에 : 벨류로 받아온 값을 넣는 코드를 작성하여
스프레드 함수로 복사하여 가져온 초기객체의 복사본을 바꿔준다.
'react' 카테고리의 다른 글
| useEffcet 사용법 (0) | 2021.11.09 |
|---|---|
| 배열 렌더링하기(react) (0) | 2021.10.29 |
| input 상태 관리하기 (0) | 2021.10.25 |
| useState 를 통해 컴포넌트에서 바뀌는 값 관리하기 (0) | 2021.10.25 |
| 조건부 렌더링 (0) | 2021.10.25 |