본문 바로가기
FRONT/Vue.js

유효성 검증을 위한 vee-validate 플러그인

by 성젼이 2021. 7. 15.

 

 

설치 version 3.4.10

npm install vee-validate
// main.js
import veeValidate from 'vee-validate';

new Vue({
    veeValidate
}).$mount('#app');

 

적용

// in component
import {ValidationObserver, ValidationProvider, extend} from 'vee-validate';
import * as rules from 'vee-validate/dist/rules';
import {messages} from 'vee-validate/dist/locale/ko.json';
import {configure} from 'vee-validate';

// configure 통해 각 상황에 맞는 클래스를 설정할 수 있다.
configure({
  classes: {
    valid: 'is-valid',
    invalid: 'is-invalid',
    dirty: ['is-dirty', 'is-dirty'],
  },
});

// 기본 룰을 불러와서 extend 시킨다.
Object.keys(rules).forEach(rule => {
  extend(rule, {
    ...rules[rule], // copies rule configuration
    message: messages[rule], // assign message
  });
});

export default {
    components: {
        ValidationObserver: ValidationObserver,
        ValidationProvider: ValidationProvider,
    }
    methods: {
        submit() {
            this.$refs.form.validate().then(result => {
            })
        }
    }
}
<validation-observer ref="form" v-slot="{invalid, validated, handleSubmit, validate}">
    <validation-provider name="name" mode="passive" rules="required" v-slot="{errors, valid, classes}">
        <input type="text" :class="classes" v-model="name">         
  </validation-provider>
</validation-observer>

<button type="button" @click="submit">submit</button>

여기서 mode = passive 는 입력버튼을 누른 후 validation이 진행되는 것을 뜻한다. 인터렉티브

현재 코드만 보면 나는 에러코드는 나오지 않고, 클래스로 제어하는 것으로 볼 수 있다.

 

 

템플릿 코드 제일 위에 validation-observer가 있는데 이는 provider를 전체적으로 총괄하는 것을 뜻한다.

하나하나 즉각적인 반응을 원하면, provider만 써도 무방하다.

 

 

보통은 입력 또는 전송 버튼을 통해서 한번에 처리를 하는 ui를 많이 작업함으로 필수적으로 쓰이지 않을까 싶다.

vee-validate는 다양한 기본 rules 를 제공하는데 이는 해당 페이지를 통해 확인 가능하다.

 

 

다양한 예시들 (examples)

https://codesandbox.io/examples/package/vee-validate

 

vee-validate examples - CodeSandbox

Learn how to use vee-validate by viewing and forking vee-validate example apps on CodeSandbox

codesandbox.io

 

 

 

 

 

 

*좋아요과 댓글은 힘이 됩니다.