프론트엔드 첫걸음

Form 제출 시 input값 가져오는 두가지 방법 본문

개발 공부/React

Form 제출 시 input값 가져오는 두가지 방법

차정 2022. 8. 14. 15:17

Form 제출 시 input값 가져오는 두가지 방법이 있다.

State에서 가져오는 것과 ref에서 읽은 값 두가지이다.

const nameInputRef = useRef();
const [enteredName, setEnteredName] = useState('');

const nameInputChangeHandler = event => {
  setEnteredName(event.target.value);
}

const formSubmissionHandler = event => {
  event.preventDefault();
  const enteredValue = nameInputRef.current.value;
  
  //1. useRef 사용하여 값 가져오기
  console.log(enteredValue);
 //nameInputRef.current.value=''; //DOM을 직접 조작하지 않도록 한다.
  
  //2. State에서 값 가져오기
  console.log(enteredName);
  setEnteredName('')
 }

return (
  <form onSubmit={formSubmissionHandler}>
    <input type="text" id="name" ref={nameInputRef} onChange={nameInputChangeHandler}
     value={enteredName}/>
  </form>

)

 

input값이 폼으로 제출될 때 한번만 필요하다면
모든 키 입력마다 상태를 업데이트 하는 것은 불필요하므로 Ref가 나을 것이다.
반면 즉각적인 유효성 검증을 위해 키 입력마다 입력값이 필요하다면 state를 사용해야한다
또한 값을 초기화 할때도 state를 조작해야한다.
ref를 통해 값을 조작하는 것은 DOM을 직접 조작하는 것이기 때문에 권장하지 않는다.