Skip to content

unregister

제어되지 않는/제어되는 입력 필드 등록 해제

</> unregister: (name: string | string[], options) => void

이 메서드는 단일 입력 또는 입력 배열을 unregister할 수 있게 해줍니다. 또한 두 번째 선택적 인자를 통해 입력을 등록 해제한 후에도 상태를 유지할 수 있습니다.

Props


아래 예제는 unregister 메서드를 호출할 때 어떤 결과를 얻을 수 있는지 보여줍니다.

<input {...register('yourDetails.firstName')} />
<input {...register('yourDetails.lastName')} />
타입입력 이름
stringunregister("yourDetails"){}
stringunregister("yourDetails.firstName"){ lastName: '' }
string[]unregister(["yourDetails.lastName"])''

옵션


이름타입설명
keepDirtybooleanisDirtydirtyFields가 이 작업 중에 유지됩니다. 그러나 이는 다음 사용자 입력이 isDirty 폼 상태를 업데이트하지 않을 것을 보장하지 않습니다. 왜냐하면 isDirtydefaultValues와 비교하여 측정되기 때문입니다.
keepTouchedbooleantouchedFields는 unregister 후에도 해당 입력을 제거하지 않습니다.
keepIsValidbooleanisValid가 이 작업 중에 유지됩니다. 그러나 이는 다음 사용자 입력이 스키마 유효성 검사를 위해 isValid를 업데이트하지 않을 것을 보장하지 않습니다. 스키마를 unregister에 맞게 조정해야 합니다.
keepErrorbooleanerrors가 업데이트되지 않습니다.
keepValueboolean입력의 현재 value가 업데이트되지 않습니다.
keepDefaultValuebooleanuseForm에서 정의된 입력의 defaultValue가 유지됩니다.
규칙
  • 이 메서드는 입력 참조와 그 값을 제거합니다. 이는 내장된 유효성 검사 규칙도 제거됨을 의미합니다.

  • 입력을 unregister해도 스키마 유효성 검사에는 영향을 미치지 않습니다.

    const schema = yup
    .object()
    .shape({
    firstName: yup.string().required(),
    })
    .required()
    unregister("firstName") // 이는 firstName 입력에 대한 유효성 검사를 제거하지 않습니다.
  • register 콜백이 있는 입력을 마운트 해제해야 합니다. 그렇지 않으면 입력이 다시 등록됩니다.

    const [show, setShow] = React.useState(true)
    const onClick = () => {
    unregister("test")
    setShow(false) // 입력을 마운트 해제하여 register가 다시 호출되지 않도록 합니다.
    }
    {
    show && <input {...register("test")} />
    }

예제:


import React, { useEffect } from "react"
import { useForm } from "react-hook-form"
interface IFormInputs {
firstName: string
lastName?: string
}
export default function App() {
const { register, handleSubmit, unregister } = useForm<IFormInputs>()
const onSubmit = (data: IFormInputs) => console.log(data)
React.useEffect(() => {
register("lastName")
}, [register])
return (
<form onSubmit={handleSubmit(onSubmit)}>
<button type="button" onClick={() => unregister("lastName")}>
unregister
</button>
<input type="submit" />
</form>
)
}
import React, { useEffect } from "react"
import { useForm } from "react-hook-form"
export default function App() {
const { register, handleSubmit, unregister } = useForm()
React.useEffect(() => {
register("lastName")
}, [register])
return (
<form>
<button type="button" onClick={() => unregister("lastName")}>
unregister
</button>
<input type="submit" />
</form>
)
}

비디오


여러분의 지원에 감사드립니다

React Hook Form이 프로젝트에서 유용하다면, GitHub에서 스타를 눌러 지원해 주세요.