vuelidateはvueJs 2に対して.0の検証ソリューション
7540 ワード
紹介する
バックエンドプロジェクトでは、例えば私たちの
我々は、独自のインスタンス化された検証クラスを注入することに依存する必要があります.もちろん、フォームデータを直接メソッドで検証することもできます.
私たちのフロントエンドのプロジェクト、つまり
1.インストール
フロントエンドパッケージをインストールするのと同じように、プロジェクト端末で実行します.
インストールが完了したら、
もちろん、検証が必要なコンポーネントで比較的小さなバージョンを参照することもできます.
2.使用
実は本当に使いやすいです.例えば、私のプロジェクトでの使用です.
1.登録検証
ユーザー登録時に通常処理するフォームフィールドは、
まず
次に、フォーム・データの検証を行います.
ここでは、ユーザー名とメールボックスの検証について、前に述べたように、検証ルールを導入します.
新しいユーザーへの登録なので
次に、検証フィールドのルールを定義します.
これらの検証ルールを定義した後、以下は私の
1人1人が異なる公式文書にも
バックエンドプロジェクトでは、例えば私たちの
Laravel
フレームワークはフォーム検証に独自のvalidation
メカニズムを持っています.彼は検証をFormRequest
に統合します.我々は、独自のインスタンス化された検証クラスを注入することに依存する必要があります.もちろん、フォームデータを直接メソッドで検証することもできます.
私たちのフロントエンドのプロジェクト、つまり
vue
のプロジェクトにも比較的良い検証ソリューションがあります.つまり、このvuelidate
です.1.インストール
フロントエンドパッケージをインストールするのと同じように、プロジェクト端末で実行します.
$ npm install vuelidate --save
インストールが完了したら、
vuex
を使用してmain.js
にこのpackage
を導入します.import Vue from 'vue'
import Vuelidate from 'vuelidate'
Vue.use(Vuelidate)
もちろん、検証が必要なコンポーネントで比較的小さなバージョンを参照することもできます.
import { validationMixin } from 'vuelidate'
var Component = Vue.extend({
mixins: [validationMixin],
validation: { ... }
})
require
のような形式で導入することもできます.const { validationMixin, default: Vuelidate } = require('vuelidate')
const { required, minLength } = require('vuelidate/lib/validators')
2.使用
実は本当に使いやすいです.例えば、私のプロジェクトでの使用です.
1.登録検証
ユーザー登録時に通常処理するフォームフィールドは、
name
、email
、password
、confirm_pwd
、Register.vue
、data
です.まず
html
というコンポーネントファイルで基本的なスタイル構造を書きました.これは一人一人によって異なります.次に、フォーム・データの検証を行います.
ここでは、ユーザー名とメールボックスの検証について、前に述べたように、検証ルールを導入します.
import { required,minLength,between,email } from 'vuelidate/lib/validators'
新しいユーザーへの登録なので
demo
を定義します data(){
return{
newUser: {
name:'',
email:'',
password:'',
confirm_pwd:''
},
}
},
次に、検証フィールドのルールを定義します.
validations: {
newUser:{
name: {
required,
minLength: minLength(2)
},
email: {
required,email
}
}
},
これらの検証ルールを定義した後、以下は私の
$v.name
の部分です.
1人1人が異なる公式文書にも
$invalid
が記載されています.
まずこのように を げて すべきは、 のvalidationGroup: {{ $v.validationGroup }}
$dirty
の を る があることです.
つまり$error
$pending
$each
value
$error
It is a shorthand to $invalid && $dirty
この$error
な$touch
の の :$reset
つまり2つの を えて$dirty
の を てみましょう
もちろん2つの な があります.true
false
の には、 な がこれであり、サブノードの$dirty
が$invalid
または$error
であることもあります.
この$dirty
を して$invalid
を み わせると が したかどうかを できます$error
はtrue
とform-group
が で する
ここでの ルールフローは、form-group--error
がclass
である 、$error
にtrue
が されます.
エラーを すると、エラーメッセージが されます.これは のエラースタイルです..form-group__message{ display: none; font-size: .95rem; color: #CC3333; margin-left: 10em; margin-bottom: 12px; } .form-group--error+.form-group__message { display: block; color: #CC3333; } .form-group--error input, .form-group--error input:focus, .form-group--error input:hover, .form-group--error textarea { border-color: #CC3333; }
2.パスワード
パスワードの は には とあまり がありませんが、 の ルールはrequired
で されています.
3. せ
これらに えて、 ルールに しない は、これを しないことが です.
フィールドでは、 のように み わせることができます.validations: { flatA: { required }, flatB: { required }, forGroup: { nested: { required } }, validationGroup: ['flatA', 'flatB', 'forGroup.nested'] }
いずれかがsameAs
であり、そのうちの1つが ルールに しない 、FlatA flatB forGroup
は$v.validationGroup.$error
である.
4.
に、 を するとき、 たちはこのようなシーンに するに いありません.
えば、 たちのメールボックスがこのメールボックスに されている は、このメールボックスで するのは らかに たちが んでいるものではありません.
また、ログイン にユーザーのパスワードを する があります.
ここで した は、ユーザー の について、 みであれば みであることを すものです.false
を にサポートします.async/await
と み わせて するのも れているので、バックエンドAPIが した から することができます.
の を やすことができます.name: { required, minLength: minLength(4), async isUnique (value) { if (value === '') return true const response = await fetch(`http://localhost:8000/api/unique/name/${value}`) return Boolean(await response.json()) } },
ここでは 、Fetch API
をバックエンドとして するデータ の のプロジェクトでローカルテストを い、データベースを することができます.// Route::group(['prefix'=>'unique','middleware'=>['api','cors']], function () { Route::get('/name/{value}',function(Request $request,$value){ if($value==="gavin"){ return response()->json(false); } return response()->json(true); }); });
もし たちがgavinを したら、このユーザーはニックネームが されていることを します.ユーザー でLaravel
の を したからです.
を するには、 のようにします.
5.カスタム
に、 ルールを するだけでなく、 ルールをカスタマイズして と み わせることもできます.
は な を しています.export default value => { if (Array.isArray(value)) return !!value.length return value === undefined || value === null ? false : !!String(value).length }
サイトgithubアドレス package サイト