В моей последней статье я рассказал о пакете проверки VueJs VeeValidate. Во второй части мы поговорим о другом популярном пакете проверки под названием Vuelidate. В то время как VeeValidate использует подход, основанный на шаблонах, Vuelidate является полной противоположностью подхода, основанного на моделях.

Как и в предыдущей статье, мы рассмотрим, как мы можем использовать этот пакет в форме регистрации. Это даст вам четкое представление о том, как вы можете использовать это практически в любой форме. Итак, приступим к кодированию 💻!

Установка

Чтобы установить VeeValidate, откройте терминал в корне вашего проекта Vue и выполните следующую команду:

npm install vuelidate --save

Далее мы добавим Vuelidate в Vue в качестве плагина. В src/main.js добавьте следующее:

import Vuelidate from 'vuelidate'
Vue.use(Vuelidate)

Проверка формы

Способ проверки поля зависит от вашей модели. Свойство данных в экспорте по умолчанию содержит модель (v-модель) для ваших входных данных. Импортировав пакет Vuelidate, вы получите новое свойство, которое вы можете добавить к экспорту по умолчанию, называемое «проверки».

Все, что вам нужно сделать, это импортировать нужные вам правила из Vuelidate (Доступные правила).

import { required, minLength } from "vuelidate/lib/validators";

Затем добавьте свойство в «валидацию» с тем же именем, что и свойства вашей модели. Это свяжет ваши проверки с вашей моделью.

data: () => ({
 // Your Model
 name: ""
}),
//Your model validations
validations: {
 name: {
  required,
  minLength: minLength(4)
 }
}

Затем вам нужно будет создать форму в шаблоне с вашими входными данными и ошибками.

<template>
 <div>
  <h2>Vuelidate Form</h2>
  <form @submit.prevent="submitForm">
   <input type="text" v-model="name" />
   <!-- display errors -->
   <div 
    class="error" 
    v-if="!$v.name.required && $v.name.$dirty">
     Field is required
   </div>
   <div
    class="error"
    v-if="!$v.name.minLength && $v.name.$dirty"
   >
    Name must have at least {{$v.name.$params.minLength.min}}
    letters.
   </div>
   <input type="submit" />
  </form>
 </div>
</template>

Наконец, мы создадим наш метод для отправки формы. Внутри экспорта по умолчанию мы добавим свойство методов с нашим методом отправки формы.

methods: {
 //Form submission handler
 submitForm() {
  //fire validations on all fields
  this.$v.$touch();
  
  //check to see if form is valid before continuing
  if (!this.$v.$invalid) {
   console.log(this.name);
  }
 }
}

Проверка формы регистрации

Теперь давайте посмотрим на реальный пример. Мы создадим форму регистрации, которая состоит из следующих полей:

  • Имя — Обязательная и единственная буква (альфа)
  • Электронная почта — обязательная и действующая электронная почта,
  • Пароль — требуется, минимальная длина 6, максимальная длина 8
  • Пол — обязательно
  • Принятие условий обслуживания — обязательно

Для стиля я буду использовать Bootstrap.

Пользовательские валидаторы

Иногда вам понадобится валидатор, которого Vuelidate не предлагает. В этой ситуации вы можете написать свои собственные валидаторы как таковые:

const mustBeCool = (value) => value.indexOf('cool') >= 0
// ...

validations: {
  myField: {
    mustBeCool
  }
}

Если вы хотите объединить их валидаторы со своей собственной логикой, вы можете написать их так:

import { helpers } from 'vuelidate/lib/validators'
const mustBeCool = (value) => !helpers.req(value) || value.indexOf('cool') >= 0

// ...

validations: {
  myField: {
    mustBeCool
  }
}

Видеоурок

Вывод

Как видите, Vuelidate — это надежный пакет проверки, который вы можете использовать в своих формах. Это позволяет вам легко и быстро добавить валидацию практически без кода валидации. Надеюсь, эта статья дала вам хорошее представление о том, чего вы можете достичь. До следующего раза, удачного кодирования!