コンテンツへスキップ

登録解除

制御されていない/制御されている入力の登録解除

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

このメソッドを使用すると、単一入力または入力の配列の登録解除を行うことができます。また、入力の登録解除後も状態を維持するための、2番目のオプション引数も提供します。

プロパティ


以下の例は、unregisterメソッドを呼び出した場合の期待値を示しています。

<input {...register('yourDetails.firstName')} />
<input {...register('yourDetails.lastName')} />
入力名
文字列unregister("yourDetails"){}
文字列unregister("yourDetails.firstName"){ lastName: '' }
文字列配列unregister(["yourDetails.lastName"])''

オプション


名前説明
keepDirty真偽値このアクションの間、isDirtydirtyFieldsは維持されます。しかし、これは次のユーザー入力によってisDirtyフォームの状態が更新されないことを保証するものではありません。なぜなら、isDirtydefaultValuesに対して測定されるからです。
keepTouched真偽値登録解除後も、touchedFieldsはその入力を削除しなくなります。
keepIsValid真偽値このアクションの間、isValidは維持されます。しかし、これは次のユーザー入力によってスキーマ検証のisValidが更新されないことを保証するものではありません。スキーマは登録解除に合わせて調整する必要があります。
keepError真偽値errorsは更新されません。
keepValue真偽値入力の現在のvalueは更新されません。
keepDefaultValue真偽値useFormで定義された入力のdefaultValueは維持されます。
ルール
  • このメソッドは入力参照とその値を削除します。つまり、組み込みの検証ルールも削除されます。

  • 入力をunregisterしても、スキーマ検証には影響しません。

    const schema = yup
    .object()
    .shape({
    firstName: yup.string().required(),
    })
    .required()
    unregister("firstName") // this will not remove the validation against firstName input
  • registerコールバックを持つ入力をアンマウントしてください。そうでなければ、入力は再び登録されます。

    const [show, setShow] = React.useState(true)
    const onClick = () => {
    unregister("test")
    setShow(false) // make sure to unmount that input so register not invoked again.
    }
    {
    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があなたのプロジェクトで役立つと感じたら、スターを付けてサポートをご検討ください。