</> formState:
Object
이 객체는 폼 전체의 상태 정보를 담고 있습니다. 폼 애플리케이션에서 사용자의 상호작용을 추적하는 데 도움을 줍니다.
반환값
이름 | 타입 | 설명 |
---|---|---|
isDirty | boolean | 사용자가 입력값을 수정한 후 true 로 설정됩니다.
|
dirtyFields | object | 사용자가 수정한 필드가 담긴 객체입니다. useForm 을 통해 모든 입력값의 defaultValues 를 제공해야 합니다. 그래야 라이브러리가 defaultValues 와 비교할 수 있습니다.
|
touchedFields | object | 사용자가 상호작용한 모든 입력값이 담긴 객체입니다. |
defaultValues | object | useForm의 defaultValues 또는 reset API를 통해 업데이트된 defaultValues 에 설정된 값입니다. |
isSubmitted | boolean | 폼이 제출된 후 true 로 설정됩니다. reset 메서드가 호출될 때까지 true 상태를 유지합니다. |
isSubmitSuccessful | boolean | 폼이 런타임 오류 없이 성공적으로 제출되었음을 나타냅니다. |
isSubmitting | boolean | 폼이 현재 제출 중이면 true , 그렇지 않으면 false 입니다. |
isLoading | boolean | 폼이 현재 비동기 기본값을 로딩 중이면 true 입니다.
|
submitCount | number | 폼이 제출된 횟수입니다. |
isValid | boolean | 폼에 오류가 없으면 true 로 설정됩니다.
|
isValidating | boolean | 유효성 검사 중이면 true 로 설정됩니다. |
validatingFields | boolean | 비동기 유효성 검사를 받고 있는 필드를 캡처합니다. |
errors | object | 필드 오류가 담긴 객체입니다. 오류 메시지를 쉽게 가져올 수 있는 ErrorMessage 컴포넌트도 있습니다. |
disabled | boolean | useForm의 disabled 속성을 통해 폼이 비활성화되면 true 로 설정됩니다. |
규칙
반환된
formState
는 렌더링 성능을 향상시키고 특정 상태가 구독되지 않았을 때 추가 로직을 건너뛰기 위해 Proxy로 감싸져 있습니다. 따라서 상태 업데이트를 활성화하려면 렌더링 전에 이를 호출하거나 읽어야 합니다.formState
는 일괄적으로 업데이트됩니다.useEffect
를 통해formState
를 구독하려면 전체formState
를 옵셔널 배열에 넣어야 합니다.useEffect(() => {if (formState.errors.firstName) {// 여기에 로직을 추가하세요}}, [formState]) // ✅// ❌ [formState.errors]는 useEffect를 트리거하지 않습니다formState
를 구독할 때 논리 연산자에 주의하세요.// ❌ formState.isValid가 조건부로 접근되므로,// Proxy가 해당 상태의 변경을 구독하지 않습니다return <button disabled={!formState.isDirty || !formState.isValid} />;// ✅ 모든 formState 값을 읽어 변경을 구독합니다const { isDirty, isValid } = formState;return <button disabled={!isDirty || !isValid} />;
예제
import React from "react";import { useForm } from "react-hook-form";export default function App() {const {register,handleSubmit,// Read the formState before render to subscribe the form state through the ProxyformState: { errors, isDirty, isSubmitting, touchedFields, submitCount },} = useForm();const onSubmit = (data) => console.log(data);return (<form onSubmit={handleSubmit(onSubmit)}><input {...register("test")} /><input type="submit" /></form>);}
비디오
여러분의 지원에 감사드립니다
React Hook Form이 프로젝트에서 유용하다면, GitHub에서 스타를 눌러 지원해 주세요.