일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Python
- object
- API
- 선택자
- JavaScript
- git
- developerlife
- dev
- This
- JS
- AI
- hatso
- learn next.js
- next.js
- ES5+
- gitCLI
- 변수
- react
- html5
- github
- hooks
- 햇소
- DOM
- 우아한테코톡
- es6
- 최적화
- CSS
- 함수
- ES6+
- array
Archives
- Today
- Total
codinghatso
React-Hook-Form을 적용시켜보자 본문
React-Hook-Form 라이브러리를 사용하는 이유
- 직관적인 기능을 제공
- 패키지 크기가 작다
- 재렌더링 수를 최소화하고 유효성 검사 계산을 최소화
- 종속성이 없는 작은 라이브러리
- 직관적인 UI
- 코드의 양이 줄어든다.
import React from "react";
import { useForm } from "react-hook-form";
const HeaderContent = ({
...
}) => {
//react-hook-form 라이브러리에서 제공하는 hook들을 선언
const {
register,
handleSubmit,
formState: { errors },
} = useForm();
//button이 발생시킨 submit이벤트 처리
const onSubmit = (data) => {
dispatch(...);
};
return (
<>
<form onSubmit={handleSubmit(onSubmit)}>
<>
<InputToDo
type="text"
placeholder="작업을 입력해주세요"
{...register("todoData", {
onChange: (e) => e,
required: true,
minLength: 2,
maxLength: 50,
pattern: /^[A-Za-zㄱ-ㅎ가-힣]+$/i,
})}
/>
<Button type="submit">
+
</Button>
{errors.todoData?.type === "minLength" && (
<p>2글자 이상 입력해주세요</p>
)}
{errors.todoData?.type === "maxLength" && (
<p>50자 이내로 입력해주세요</p>
)}
</>
</form>
</>
);
};
export default HeaderContent;
react hook form을 적용한 코드의 모습
코드가 길어질수록 복잡성이 많이 높아지는 것을 라이브러리를 사용함으로써 해결할 수 있었습니다.
내가 이해한 코드 구조, 동작 방식은 form 태그 안에 input태그에 담긴 데이터들을 호완성 검사 등을 거친 다음 submit 이벤트가 발생하면 form태그의 onSubmit에 명시된 handle 함수가 동작하게 됩니다.
- useForm: 라이브러리의 인스턴스를 생성합니다.
- register: 입력 필드의 유효성 검사를 할 수 있습니다.
- handleSubmit: submit이벤트가 발생하면 실행할 함수를 정의합니다.
- errors: 유효성 검사에서 실패처리가 되면 에러 메시지를 생성합니다.
가독성을 위한 다양한 활용 방법이 있으며, controller, watch 등 react hook form의 활용 방안이 더 존재합니다. 간단하게 유효성 검사를 통해 error를 컨트롤하는 목적이시라면 본 포스팅을 참고하시고 조금 더 디테일한 활용 방안은 포스트에 올려둔 라이브러리 공식 문서를 참고하시길 바랍니다. 감사합니다.
'WEB > React' 카테고리의 다른 글
Transient props란 무엇인가? (0) | 2024.01.17 |
---|---|
React에서 폰트 테마(Theme) 적용하기 (0) | 2024.01.12 |
styled-components를 활용하여 일관된 디자인 시스템을 구축하기 (0) | 2024.01.10 |
useReducer - React Hooks (0) | 2023.11.30 |
useMemo -React Hooks (0) | 2023.11.09 |
Comments