[React] form 태그를 사용해서 value 가져오기 feat. TypeScript

2022. 12. 18. 15:14·React/실험실
반응형

React에서 Form 태그를 사용하는 경우가 있다. 

일반적으로 input, textarea 등 value를 통해 무언가 작업을 한다. 

 

이때, useState를 사용하면 값이 변경될 때 마다 컴포넌트가 리렌더링이 발생하게 된다. 

실제 값이 변경됨을 감지해서 무언가 작업을 해야한다면 사용할 수 있지만 그게 아니라면

굳이 필요없는 리렌더링이 발생하게 된다. 

 

이것을 useRef도 아닌 Form 태그 자체 기능을 사용해서 해결할 수 있다. 

const Component = () => {
  const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {
    event.preventDefault();
    const target = event.target as HTMLFormElement;
    
    const title = target.titleValue as HTMLInputElement;
    const content = target.contentValue as HTMLInputElement;
    const checkbox = target.checkboxValue as HTMLInputElement;
  
    console.log(title.value)       // title 의 값
    console.log(content.value) // content의 값
    console.log(checkbox.checked)  // check 여부
  }
  
  return (
    <form onSubmit={handleSubmit}>
      <input id="titleValue" />
      <textarea id="contentValue" />
      
      <input type="checkbox" id="checkboxValue" />
      
      <button type="submit">버튼</button>
    </form>
  )
}

Form 태그의 event에는 자식 Element를 가지고 있다. 

그래서 해당 Element를 가져와서 사용하면 값을 얻을 수 있다. 

 

또한 이렇게 사용하면 장점이 하나 더 있는데, target.reset() 함수를 사용하면 form 태그의 모든 

값이 초기화가 된다. 굳이 불필요한 초기화 작업이 없어진다는 장점이 있다. 

반응형
저작자표시 비영리 변경금지 (새창열림)

'React > 실험실' 카테고리의 다른 글

[React] 벨로퍼트와 함께하는 React Testing - TDD  (1) 2023.01.05
[React] 성능 개선기  (0) 2022.12.21
[React] React-Query - useQuery  (0) 2022.12.13
[React] Docker Nginx React를 사용해서 배포하기  (0) 2022.12.12
[React] Nginx를 사용해서 배포하기  (0) 2022.12.10
'React/실험실' 카테고리의 다른 글
  • [React] 벨로퍼트와 함께하는 React Testing - TDD
  • [React] 성능 개선기
  • [React] React-Query - useQuery
  • [React] Docker Nginx React를 사용해서 배포하기
잉여개발자
잉여개발자
풀스택 개발자를 목표로 잉여롭게 개발 공부도 하면서 다양한 취미 생활도 즐기고 있는 잉여 개발자입니다.
  • 잉여개발자
    잉여로운 개발일지
    잉여개발자
    • 분류 전체보기 (789)
      • 개발정보 (36)
      • 개발환경 (7)
      • 개발생활 (19)
      • React (141)
        • 이론 (23)
        • 기능 (12)
        • 실험실 (88)
        • 버그 (6)
        • 패스트캠퍼스 (9)
        • Npm (3)
      • React Native (28)
        • 공통 (6)
        • TypeScript (3)
        • JavaScript (18)
        • 버그 (1)
      • Next.js (30)
        • 이론 (13)
        • 실험실 (13)
        • 버그 (3)
      • Web (35)
      • 알고리즘 (202)
        • 풀이 힌트 (39)
      • JavaScript (47)
      • TypeScript (29)
        • 기초 (27)
        • 실험실 (2)
      • Node.js (13)
        • 이론 (0)
        • 기능 (3)
        • 실험실 (9)
        • 버그 (1)
      • 도커 (4)
      • CCNA (22)
        • 이론 (4)
        • 문제 (18)
      • 취미생활 (167)
        • 잉여로운 칵테일 (2)
        • 잉여의 식물키우기 (130)
        • 잉여로운 여행기 (11)
        • 잉여의 제2외국어 (21)
        • 잉여로운 책장 (2)
      • Java (1)
        • Java의 정석 (1)
      • 꿀팁 공유 (3)
  • 태그

    알고리즘
    리얼학습일기
    ReactNative
    영어회화
    react
    Docker
    프로그래머스
    next.js
    바질
    CCNA
    다이소
    네이버 부스트캠프
    영어독학
    타일러영어
    Node.js
    ChatGPT
    바질 키우기
    webpack
    typescript
    리액트
    Babel
    자바스크립트
    네트워크
    타입스크립트
    CSS
    redux
    덤프
    리얼클래스
    javascript
    식물
  • hELLO· Designed By정상우.v4.10.1
잉여개발자
[React] form 태그를 사용해서 value 가져오기 feat. TypeScript
상단으로

티스토리툴바