Vue.jsでのフォーム管理術:Vuelidateを活用する

Vue.jsでのフォーム管理術:Vuelidateを活用する

フォームのバリデーションは、ユーザー入力を正確かつ安全に処理するために不可欠です。本記事では、Vue.jsでVuelidateを活用して効果的なフォーム管理を行う方法を解説します。

1. Vuelidateのインストール

Vuelidateをプロジェクトに追加します。

npm install @vuelidate/core @vuelidate/validators

2. 基本的なバリデーションルール

簡単な必須フィールドと文字列長のバリデーション。

import useVuelidate from '@vuelidate/core';
import { required, minLength } from '@vuelidate/validators';

export default {
  setup() {
    const state = reactive({
      username: '',
    });

    const rules = {
      username: { required, minLength: minLength(3) },
    };

    const v$ = useVuelidate(rules, state);
    return { state, v$ };
  },
};

3. エラーメッセージの表示

エラーメッセージを表示する。

<div>
  <input v-model="state.username" />
  <span v-if="v$.username.$error">ユーザー名は必須で、3文字以上である必要があります。</span>
</div>

4. 複数フィールドのバリデーション

複数のフィールドをバリデーションします。

const state = reactive({ username: '', email: '' });
const rules = {
  username: { required },
  email: { required, email },
};

5. カスタムバリデータ

独自のバリデーションルールを作成します。

const isValidUsername = (value) => /^[a-zA-Z0-9]+$/.test(value);

6. 動的なバリデーションルール

ルールを動的に変更します。

if (state.condition) {
  rules.username.required = false;
}

7. フォームの送信処理

バリデーション後にフォームを送信します。

const submitForm = () => {
  v$.$validate();
  if (!v$.$error) {
    console.log('フォームが送信されました');
  }
};

8. フィールドのリセット

フォームをリセットします。

const resetForm = () => {
  state.username = '';
  v$.$reset();
};

9. 外部ライブラリとの統合

他のライブラリと連携して拡張。

import { required, maxLength } from '@vuelidate/validators';

10. 条件付きバリデーション

特定の条件下でルールを適用。

if (state.isActive) {
  rules.email.required = true;
}

11. エラーハイライト

フィールドにエラーハイライトを適用。

<input v-model="state.username" :class="{'error': v$.username.$error}" />

12. Vue DevToolsでのデバッグ

Vue DevToolsを使用してバリデーションをデバッグ。

app.config.performance = true;

これらのテクニックを使用することで、Vuelidateを活用した強力なフォームバリデーションが実現できます。