Vue_3
4339 ワード
Vue コンポーネント 2コンポーネントライフサイクル 3コンポーネント化開発 4コンポーネント間パラメータ 1コンポーネント
独自のHTML、CSS、データを持つページ独立領域.利点:再利用が容易で、ばらばらな結合、分業協力ページは独立した領域から構成され、コンポーネントにカプセル化されています.すなわち、各ページは複数のコンポーネントからなる
1.Vueコンポーネントの作成:1.1コンポーネントのHTMLクリップを定義してから、唯一の親要素のみを包む必要がある1.2 Vueコンポーネントの作成
2.コンポーネントの使用:コンポーネントは、実際には再利用可能なラベルです.コンポーネント名は、ラベル名の実行時:ラベルの代わりに中のHTMLクリップを使用する場所です.
2コンポーネントライフサイクル
1つのコンポーネントのロードプロセスには、4つのフェーズ:1が含まれます.Create作成:コンポーネントインスタンスオブジェクトを作成し、dataオブジェクトを作成します.Mountマウント:コンポーネントテンプレートの要素をバインドし、DOMツリー3にマウントします.Update:モデル変数が更新4.Destory:コンポーネントを破棄するには
ライフサイクルフック関数:ライフサイクルフェーズごとに放出されるイベント処理関数は、ライフサイクルフェーズでタスクを実行する場合に、そのフェーズに対応するコンストラクション関数に書きます.含む:beforeCreate:コンポーネントインスタンスを作成する前にcreatedをトリガーする:コンポーネントインスタンスを作成した後、コンポーネントをDOMツリーにマウントする前にnew Vue($data:モデルデータ$el:undefined)をトリガーしてajax要求を送信して一時的にDOM操作を実行できません!beforeMount:コンポーネントをDOMツリーにマウントする前にmountedをトリガする:コンポーネントをDOMツリーにマウントした後にnew Vue($data:モデルデータ$el:仮想DOMツリー)をトリガするajaxリクエストを送信してDOM操作を実行することもできます!
beforeUpdate:モデルデータが更新される前にupdatedがトリガーされる:モデルデータが更新された後にbeforeDestroyがトリガーされる:コンポーネントオブジェクトを破棄する前にdestroyedがトリガーされる:コンポーネントを破棄した後にトリガーされる
注意createdフェーズは、ページの再ロード時にのみ再実行されるため、createdフェーズでaxiosリクエストを送信した後、vueコンポーネントのジャンプのたびにaxiosリクエストを送信できるようにwatchリスニング関数を追加する必要があります.
3コンポーネント化開発
コンポーネント:独自のHTML、CSS、JSとデータを持つページ独立領域コンポーネント化開発:ページを入手した後、まず領域を区分し、各領域はHTML、CSS、データを持つ独立コンポーネント分類である:本のコンポーネント:new Vue({el:"#app",data:{}})は通常1ページで、1本のルートコンポーネント しかありません.グローバルコンポーネント、任意の場所で自由に使用できるコンポーネントVue.component(「コンポーネント名」,{template:「#tplxxx」,data:function(){return{}}}) ローカルコンポーネント(サブコンポーネントとも呼ばれ、特定の親コンポーネント内のコンポーネント1のみに使用可能)サブコンポーネントとしてのグローバルコンポーネントを通常のオブジェクトに降格させ、コンポーネントオブジェクト名を将来のコンポーネントラベル名からアルパカ名に変更する2)親コンポーネントにcomponentsプロパティを追加します:{サブコンポーネントオブジェクト、...}サブコンポーネント定義位置は親コンポーネントの前にある必要があります.Vueはアルパカの名前のサブコンポーネントを-名前の小文字署名に変換します.
4コンポーネント間パラメータ親->子:親コンポーネントのモデル変数です.子コンポーネントは直接使用できません.解決:[属性の下り]1)子コンポーネント 子->親:イベント上り問題:子コンポーネントは親コンポーネントのモデル変数の内容を直接削除する権限がありません解決:イベント上り1)親コンポーネント:子コンポーネントにカスタムイベントと処理関数を事前に定義する: イベント上り下りの例
独自のHTML、CSS、データを持つページ独立領域.利点:再利用が容易で、ばらばらな結合、分業協力ページは独立した領域から構成され、コンポーネントにカプセル化されています.すなわち、各ページは複数のコンポーネントからなる
1.Vueコンポーネントの作成:1.1コンポーネントのHTMLクリップを定義してから、唯一の親要素のみを包む必要がある1.2 Vueコンポーネントの作成
Vue.component(“ ”,{
template:” ”, // , —— HTML
//data:function(){return {}}
data(){ // , data , data
return {
}
},
… new Vue()
})
2.コンポーネントの使用:コンポーネントは、実際には再利用可能なラベルです.コンポーネント名は、ラベル名の実行時:ラベルの代わりに中のHTMLクリップを使用する場所です.
2コンポーネントライフサイクル
1つのコンポーネントのロードプロセスには、4つのフェーズ:1が含まれます.Create作成:コンポーネントインスタンスオブジェクトを作成し、dataオブジェクトを作成します.Mountマウント:コンポーネントテンプレートの要素をバインドし、DOMツリー3にマウントします.Update:モデル変数が更新4.Destory:コンポーネントを破棄するには
ライフサイクルフック関数:ライフサイクルフェーズごとに放出されるイベント処理関数は、ライフサイクルフェーズでタスクを実行する場合に、そのフェーズに対応するコンストラクション関数に書きます.含む:beforeCreate:コンポーネントインスタンスを作成する前にcreatedをトリガーする:コンポーネントインスタンスを作成した後、コンポーネントをDOMツリーにマウントする前にnew Vue($data:モデルデータ$el:undefined)をトリガーしてajax要求を送信して一時的にDOM操作を実行できません!beforeMount:コンポーネントをDOMツリーにマウントする前にmountedをトリガする:コンポーネントをDOMツリーにマウントした後にnew Vue($data:モデルデータ$el:仮想DOMツリー)をトリガするajaxリクエストを送信してDOM操作を実行することもできます!
beforeUpdate:モデルデータが更新される前にupdatedがトリガーされる:モデルデータが更新された後にbeforeDestroyがトリガーされる:コンポーネントオブジェクトを破棄する前にdestroyedがトリガーされる:コンポーネントを破棄した後にトリガーされる
注意createdフェーズは、ページの再ロード時にのみ再実行されるため、createdフェーズでaxiosリクエストを送信した後、vueコンポーネントのジャンプのたびにaxiosリクエストを送信できるようにwatchリスニング関数を追加する必要があります.
3コンポーネント化開発
コンポーネント:独自のHTML、CSS、JSとデータを持つページ独立領域コンポーネント化開発:ページを入手した後、まず領域を区分し、各領域はHTML、CSS、データを持つ独立コンポーネント分類である:
4コンポーネント間パラメータ
var ={
template:"xxx",
props:[" ", ... ] //
// :
// : data:{ }
}
{{ }}
2)親コンポーネント
>
,
)子コンポーネント ={
…
methods:{
(){
This.$emit(“ ”, )
}
}
}
var todoAdd={
template:"#tplTodoAdd",
data:function(){
return { new_task:"" }
},
methods:{
add(){
this.$emit("add",this.new_task);
this.new_task="";
}
}
}
{{i+1}} - {{task}}
var todoItem={
template:"#tplTodoItem",
props:["task","i"]// :
// : data:{ task:xx, i:x }
}
var todoList={
template:"#tplTodoList",
props:["tasks"],// :
// : data:{tasks}
components:{ todoItem }
}
Vue.component("todo",{
template:"#tplTodo",
data:function(){
return {//data
tasks:[" "," "," "]
}
},
components:{
todoAdd,//Vue todo-add
todoList//Vue todo-list
},
methods:{
do_add(new_task){
this.tasks.push(new_task);
}
}
})
new Vue({
el:"#app",
data:{}
})