vue公式チュートリアルノート(基礎編)
67568 ワード
vue公式チュートリアルノート1基礎部 紹介 宣言レンダリング 条件とサイクル 処理ユーザ入力 コンポーネント化アプリケーション構築 vueインスタンス 完全な構成要素APIドキュメント vueインスタンス を作成するデータと方法 ライフサイクルフック テンプレート構文 補間 指令 略(文法糖) 計算属性およびリスナー 計算属性 リスナー ClassとStyleバインド 条件レンダリング v-if v-show v-if vs v-show v-if v-forとともに を使用
リストレンダリング イベント処理 リスニングイベント イベント処理方法 内蔵プロセッサ方法: イベント修飾子 キー修飾子 キーコード(廃棄済み) システム修飾子 フォーム入力バインディング 基礎用法 値バインド 修飾子 コンポーネント上でv-model を使用
コンポーネントベース 基本例 コンポーネントの多重化 コンポーネントの組織 Propを介してサブアセンブリにデータを渡す .単一ルート要素 サブアセンブリイベント を傍受するスロットを介してコンテンツを配信する .ダイナミックコンポーネント DOMテンプレートを解析する際の注意事項
きそぶ
紹介する
宣言レンダリング
{ {}}
条件とループ
v-if/v-for
ユーザー入力の処理
v-on
コンポーネント化アプリケーション構築
vueインスタンス
vueインスタンスの構成要素を簡単に説明します
完全な構成要素APIドキュメント
APIドキュメント
vueインスタンスの作成
データとメソッド dataオブジェクトのすべてのpropertyがVueの応答システムに組み込まれる. は、インスタンスが作成されたときにdataにすでに存在するpropertyのみが応答式である. Object.freeze()が加わると、応答システムは変化を追跡できない(応答しない) .インスタンス属性およびメソッド参照APIドキュメント ライフサイクルフック定義:各Vueインスタンスが作成されるときに一連の初期化プロセスによって実行されるいくつかの関数.ユーザーは、異なるフェーズで独自のコードを追加できます. ライフサイクルフックのthisコンテキストは、呼び出されたVueインスタンスを指します. オプションpropertyまたはコールバックでcreated:()=>console.などの矢印関数を使用しないでください.log(this.a)またはvm.$watch(‘a’, newValue => this.myMethod()). 矢印関数にはthisがないため、thisは変数として上位の構文の役割ドメインに検索され、見つかるまで常にUncaaught TypeError:Cannot read property of undefinedまたはUncaaught TypeError:this.myMethod is not a functionなどのエラー. ライフサイクルフック関数beforeCreated created beforeMount mounted beforeUpdate beforeDestroy destroyed テンプレート構文
補間
テキスト"Mustache"構文(括弧)のテキスト補間:{}} は一度に補間され、データが変更されると補間箇所の内容は更新されません:v-once オリジナルHTML v-html
Attribute属性変数:v-bind JavaScript式の使用二重かっこ、v-bind内に単一式 を書くことができます.
インストラクション
パラメータ v-bind応答式更新HTML attribute v-onモニタdomイベント ダイナミックパラメータ 2.6.0新コードは次の です.
修飾子 .prevent
略語(文法糖) v-bind: -> : v-on: -> @
計算プロパティとリスナー
計算プロパティ基礎例 計算属性キャッシュvsメソッド計算属性は、それらの応答式依存に基づいてキャッシュされたキャッシュであり、オーバーヘッド を低減する.計算属性vsリスニング属性
リスナーこの方法は、データの変化時に非同期またはオーバーヘッドの大きい操作を実行する必要がある場合に最も有用である.
ClassとStyleのバインド
条件付きレンダリング
v-if
1.v-if v-else-if v-else条件のレンダリング
きそぶ
紹介する
宣言レンダリング
{ {}}
条件とループ
v-if/v-for
ユーザー入力の処理
v-on
コンポーネント化アプリケーション構築
vueインスタンス
vueインスタンスの構成要素を簡単に説明します
完全な構成要素APIドキュメント
APIドキュメント
vueインスタンスの作成
データとメソッド
補間
テキスト
Attribute
インストラクション
パラメータ
修飾子
略語(文法糖)
//
// attributeName herf :href="url"
<a v-bind:[attributeName]="url">a>
// eventName click,focus @click="doSomething"
<a v-on:[eventName]="doSomething">a>
// 1. null , 。
// 2. ** ** , ** **
// 3.
// 4.
計算プロパティとリスナー
計算プロパティ
<p>{
{reversedMessage}}}p>
computed: {
reversedMessage: function() {
return this.xxx.join('')
}
}
computed: {
fullName: {
get: function () {
return this.firstName + ' ' + this.lastName
},
set: fucntion (newValue) {
var names = newValue.split(' ')
this.firstName = names[0]
this.lastName = names[names.length - 1]
}
}
}
リスナー
<div id="watch-example">
<p>
Ask a yes/no question:
<input v-model="question">
p>
<p>{
{ answer }}p>
div>
// ( API)
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/axios.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/lodash.min.js"></script>
var watchExampleVM = new Vue({
el: '$watch-example',
data: {
question: '',
answer: 'I cannot give you an answer until you ask a question!'
},
watch: {
question: function (newQ, oldQ) {
this.answer = 'Waiting for you to stop typing...'
this.debouncedGetAnswer()
}
},
created: function () {
this.debouncedGetAnswer = _.debounce(this.getAnswer, 500)
},
methods: {
getAnswer: function () {
if (this.question.indexOf('?') === -1) {
this.answer = 'Questions usually contain a question mark. ;-)'
return
}
this.answer = 'Thinking...'
var vm = this
axios.get('https://yesno.wtf/api')
.then(function (res) {
vm.answer = _.capitalize(res.data.answer)
}).catch(function (err) {
vm.answer = 'Error! Could not reach the API.' + err
})
}
}
})
ClassとStyleのバインド
// 、 HTML Class
// 1.
<div
v-bind:class="{ active: isActive }"
>div>
<div
v-bind:class="{ active: isActive, 'text-danger': hasError }"
>div>
<div
v-bind:class="classObject"
>div>
computed: {
classObject: function () {
return {
active: this.isActive && !this.error,
'text-danger': this.error && this.error.type === 'fatal'
}
}
}
// 2.
<div v-bind:class="[activeClass, errorClass]">div>
<div v-bind:class="[isActive ? activeClass : '', errorClass]">div>
// 3.
<div v-bind:class="[{ active: isActive }, errorClass]">div>
// 4. class
<my-component class="baz boo">my-component>
<my-component v-bind:class="{ active: isActive }">my-component>
// 、
// 1.
<div v-bind:style="{
color: activeColor, fontSize: fontSize + 'px' }">div>
// 2.
<div v-bind:style="styleObject">div>
data: {
styleObject: {
color: 'red',
fontSize: '13px'
}
}
// 3. ( )
<div v-bind:style="[baseStyles, overridingStyles]">div>
// 4.
// 5. ( )
<div :style="{
display: ['-webkit-box', '-ms-flexbox', 'flex'] }">div>
条件付きレンダリング
v-if
1.v-if v-else-if v-else条件のレンダリング
v-if
key
// key
<template v-if="loginType === 'username'">
<label>Usernamelabel>
<input placeholder="Enter your username" key="username-input">
template>
<template v-else>
<label>Emaillabel>
<input placeholder="Enter your email address" key="email-input">
template>
v-show
1.( template ) DOM display
v-if vs v-show
1.v-if 。
2.v-if , v-show 。
3. v-show v-if
v-if v-for
1. ( ) v-if v-for
2. v-if v-for ,v-for v-if
-
:
v-for="item in items / (item, index) in items / item of items"
(シーケンス index)
- オブジェクトを る:
v-for="(value, name) in object / value in object / v-for="(value, name, index) in object""
(キー nameインデックスindex)
v-forのkeyとして または タイプの を します.
-
1. ( ):push()pop()shift()unshift()splice()sort()reverse()2. メソッド( しい を す):filter()concat()slice 3.JavaScriptの により、Vueは やオブジェクトの を できません.しんとうおうとうしきのげんり
- フィルタ/ソートの を
プロパティ
ループが を できない は、 を できます. <ul v-for="set in sets">
<li v-for="n in even(set)">{
{ n }}li>
ul>
data: {
sets: [[ 1, 2, 3, 4, 5 ], [6, 7, 8, 9, 10]]
},
methods: {
even: function (numbers) {
return numbers.filter(function (number) {
return number % 2 === 0
})
}
}
- v-forサイクル :v-for="n in 10"
-
v-for
v-on
v-on:click=“greet”
:
1.v-on:click=“say(‘hi’)”
2. DOM :
<button v-on:click="warn('Form cannot be submitted yet.', $event)">
Submit
button>
methods: {
warn: function (message, event) {
if (event) {
event.preventDefault()
}
alert(message)
}
}
1. , DOM
2. .stop (click: )
3. .prevent (submit: )
4. .capture (click: )
5. .self (click: )
6. .once (click: 2.1.4 – )
7. .passive (scroll: 2.3.0 – )
8. ,
<input v-on:keyup.enter="submit">
<input v-on:keyup.page-down="onPageDown">
( )
:
.enter
.tab
.delete ( “ ” “ ” )
.esc
.space
.up
.down
.left
.right
.ctrl
.alt
.shift
.meta
<input v-on:keyup.alt.67="clear">
<div v-on:click.ctrl="doSomething">Do somethingdiv>
.exact (2.5.0 – 。)
<button v-on:click.ctrl="onClick">Abutton>
<button v-on:click.ctrl.exact="onCtrlClick">Abutton>
<button v-on:click.exact="onClick">Abutton>
(2.2.0 )
.left
.right
.middle
テキスト