4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[react-hook-form] reset関数を使う場合は、setValueにオプションを設定した方がいい。

Last updated at Posted at 2022-03-14

入力フォームを作る際に、デフォルトで値を入れときたいとか、リセットをしたいとかそういったケースは結構あると思います。

react-hook-formでは、reset関数を使うとデフォルト値を設定でき、簡単にリセットできるようになります。

import { useForm } from 'react-hook-form';

const SampleComponent: React.FC = () => {
  const {control, handleSubmit, reset, formState} = useForm();

  useEffect(() => {
    reset(initialValue);
  }, [reset]);

  return (
    <form onSubmit={handleSubmit(onSubmit)}>
      ...
      <button type="submit" disabled={!formState.isDirty}>保存</button>
      <button type="button" onClick={() => reset()}>リセット</button>
    </form>
  );
}

簡単ですね。
なお、フォームの値を変更すると、isDirtyがtrueになり、保存ボタン押せるようになります。

setValueのオプションにshoudDirtyを設定する。

かなり簡単なコードでリセットができて便利なのですが、setValueを使う場合はオプションを設定しないと、resetがどうやら、反映しないみたいです。

こちらですが、shouldDirty: trueを設定してあげると、反応するようになります。

setValue(FieldName, targetNewValue, { shouldDirty: true });
4
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?