[ React ] input 여러개 상태 관리하기

SeungJin·2022년 1월 31일
0

React

목록 보기
2/19

import React,{ useState } from 'react'

function State3() {
  // 객체 형태의 상태를 관리
  const [inputs, setInputs] = useState({
    name:'',
    nickname:'',
  });
  // 비구조 항당을 통해서 추출
  const {name,nickname} = inputs;

  const onChange = (e) => {
    // name 값과 value를 매개변수 e에서 추출
    const {name, value} = e.target;
    // React에서 객체 형태를 업데이트 하기위해선 기존의 객체를 복사해야 합니다
    setInputs ({
      ...inputs,
      // 기존의 값을 덮어 씌우고 새로운 값을 넣어줍니
      // 이 방식이 불변성을 지킨다고 합니다
      [name]: value,
    });
  };
  const onReset = () => {
    setInputs({
      // name와 nickname의 값을 비워줌
      name:'',
      nickname: ''
    })
  };

  return (
    <div>
      <input
        name='name'
        placeholder='이름'
        onChange={onChange}
        value={name}
      />
      <input
        name='nickname'
        placeholder='닉네임'
        onChange={onChange}
        value={nickname}
      />
      <button onClick={onReset}>초기화</button>
      <div>
        <b>: </b>
        {name} ({nickname})
      </div>
    </div>
  )
}

export default State3;

setInputs에서 기존의 값을 복사한 다음 새로운 상태로 설정하는 것 을 불변성을 지킨다고 합니다

불변성을 지켜 주어야만 리액트 컴포넌트 에서 상태가 업데이트되는 것을 감지하고 이에 따라 필요한 렌더링이 발생합니다

profile
혼자 공부해 보고 적어두는 블로그입니다 문제 있다고 생각되시는 부분이 있으면 피드백이라도 남겨주시면 감사하겠습니다

0개의 댓글