05-Vueコンポーネント
14968 ワード
Vueコンポーネントの定義
コンポーネントとは何か:コンポーネントの出現は、Vueインスタンスのコード量を分割するためであり、異なるコンポーネントで異なる機能モジュールを区分することができ、将来どのような機能が必要なのか、対応するコンポーネントを呼び出すことができる.コンポーネント化とモジュール化の違い:
モジュール化:コードロジックの観点から区分される.コードの階層開発を便利にし、各機能モジュールの職能が単一であることを保証する.
コンポーネント化:UIインタフェースの観点から区分されます.フロントエンドのコンポーネント化は、UIコンポーネントの再利用を容易にする.
-グローバルコンポーネント定義の3つの方法
Vueを使用します.extend配合Vue.componentメソッド:
Vueを直接使用する.componentメソッド:
テンプレート文字列をscriptラベル種に定義する:
また、Vueを使用する必要がある.コンポーネントを定義するには、次の手順に従います.
注意:コンポーネント内のDOM構造は、唯一のルート要素(Root Element)でしか包まれません.
-コンポーネントにデータとレスポンス・イベントを表示します(カウンタ・ケース・デモンストレーション).
構成要素において、
サブコンポーネントで、テンプレート文字列をscriptラベルに定義する場合、サブコンポーネントの
-
コンポーネントインスタンス定義方法:
参照コンポーネント:
ページ構造:
Vueインスタンス定義:
コンポーネントインスタンス定義方法:
切り替えスタイルの追加:
親コンポーネントが子コンポーネントに値を渡す
コンポーネントインスタンスの定義方法は、親コンポーネントから渡されるデータを定義するために
子コンポーネントから親コンポーネントへの値の転送
原理:親コンポーネントはメソッドの参照を、子コンポーネントの内部に渡し、子コンポーネントは内部で親コンポーネントから渡されたメソッドを呼び出し、同時に親コンポーネントに送信するデータを、メソッドを呼び出すときにパラメータとして渡す.
親コンポーネントは、メソッドの参照を子コンポーネントに渡す.ここで、
サブアセンブリ内部は、
転載先:https://www.cnblogs.com/CGWTQ/p/11250309.html
コンポーネントとは何か:コンポーネントの出現は、Vueインスタンスのコード量を分割するためであり、異なるコンポーネントで異なる機能モジュールを区分することができ、将来どのような機能が必要なのか、対応するコンポーネントを呼び出すことができる.コンポーネント化とモジュール化の違い:
モジュール化:コードロジックの観点から区分される.コードの階層開発を便利にし、各機能モジュールの職能が単一であることを保証する.
コンポーネント化:UIインタフェースの観点から区分されます.フロントエンドのコンポーネント化は、UIコンポーネントの再利用を容易にする.
-グローバルコンポーネント定義の3つの方法
Vueを使用します.extend配合Vue.componentメソッド:
var login = Vue.extend({
template: ' '
});
Vue.component('login', login);
Vueを直接使用する.componentメソッド:
Vue.component('register', {
template: ' '
});
テンプレート文字列をscriptラベル種に定義する:
<div><a href="#"> </a> | <a href="#"> </a></div>
また、Vueを使用する必要がある.コンポーネントを定義するには、次の手順に従います.
Vue.component('account', {
template: '#tmpl'
});
注意:コンポーネント内のDOM構造は、唯一のルート要素(Root Element)でしか包まれません.
-コンポーネントにデータとレスポンス・イベントを表示します(カウンタ・ケース・デモンストレーション).
構成要素において、
data
は、方法として定義する必要があり、例えば、.Vue.component('account', {
template: '#tmpl',
data() {
return {
msg: ' !'
}
},
methods:{
login(){
alert(' ');
}
}
});
サブコンポーネントで、テンプレート文字列をscriptラベルに定義する場合、サブコンポーネントの
data
属性の値にアクセスするには、this
を使用してアクセスする必要があります. -
components
プロパティを使用してローカルサブアセンブリを定義します.コンポーネントインスタンス定義方法:
<span style="color:#008000;">//</span><span style="color:#008000;"> Vue , ViewModel</span>
<span style="color:#0000ff;">var</span> vm = <span style="color:#0000ff;">new</span><span style="color:#000000;"> Vue({
el: </span>'#app'<span style="color:#000000;">,
data: {},
methods: {},
components: { </span><span style="color:#008000;">//</span><span style="color:#008000;"> </span>
account: { <span style="color:#008000;">//</span><span style="color:#008000;"> account </span>
template: '<div><h1> Account {{name}}</h1><login></login></div>', <span style="color:#008000;">//</span><span style="color:#008000;"> </span>
components: { <span style="color:#008000;">//</span><span style="color:#008000;"> </span>
login: { <span style="color:#008000;">//</span><span style="color:#008000;"> login </span>
template: "<h3> </h3>"<span style="color:#000000;">
}
}
}
}
});
</span>
参照コンポーネント:
<div id="app">
<account>account>
div>
flag
識別子を使用して、v-if
とv-else
を組み合わせてコンポーネントを切り替えます.ページ構造:
<div id="app">
<input type="button" value="toggle" @click="flag=!flag">
<my-com1 v-if="flag">my-com1>
<my-com2 v-else="flag">my-com2>
div>
Vueインスタンス定義:
<span style="color:#000000;">
Vue.component(</span>'myCom1'<span style="color:#000000;">, {
template: </span>'<h3> </h3>'<span style="color:#000000;">
})
Vue.component(</span>'myCom2'<span style="color:#000000;">, {
template: </span>'<h3> </h3>'<span style="color:#000000;">
})
</span><span style="color:#008000;">//</span><span style="color:#008000;"> Vue , ViewModel</span>
<span style="color:#0000ff;">var</span> vm = <span style="color:#0000ff;">new</span><span style="color:#000000;"> Vue({
el: </span>'#app'<span style="color:#000000;">,
data: {
flag: </span><span style="color:#0000ff;">true</span><span style="color:#000000;">
},
methods: {}
});
</span>
:is
プロパティを使用して、異なるサブコンポーネントを切り替え、切り替えアニメーションを追加します.コンポーネントインスタンス定義方法:
//
const login = Vue.extend({
template: `
`
});
Vue.component('login', login);
//
const register = Vue.extend({
template: `
`
});
Vue.component('register', register);
// Vue , ViewModel
var vm = new Vue({
el: '#app',
data: { comName: 'login' },
methods: {}
});
component
のラベルを使用してコンポーネントを参照し、:is
のプロパティを使用してロードするコンポーネントを指定します. <div id="app">
<a href="#" @click.prevent="comName='login'"> a>
<a href="#" @click.prevent="comName='register'"> a>
<hr>
<transition mode="out-in">
<component :is="comName">component>
transition>
div>
切り替えスタイルの追加:
親コンポーネントが子コンポーネントに値を渡す
コンポーネントインスタンスの定義方法は、親コンポーネントから渡されるデータを定義するために
props
のプロパティを使用する必要があります.
<span style="color:#008000;">//</span><span style="color:#008000;"> Vue , ViewModel</span>
<span style="color:#0000ff;">var</span> vm = <span style="color:#0000ff;">new</span><span style="color:#000000;"> Vue({
el: </span>'#app'<span style="color:#000000;">,
data: {
msg: </span>' '<span style="color:#000000;">
},
components: {
son: {
template: </span>'<h1> --- {{finfo}}</h1>'<span style="color:#000000;">,
props: [</span>'finfo'<span style="color:#000000;">]
}
}
});
</span>
v-bind
または簡略化命令を使用して、データをサブアセンブリに渡す:<div id="app">
<son :finfo="msg">son>
div>
子コンポーネントから親コンポーネントへの値の転送
原理:親コンポーネントはメソッドの参照を、子コンポーネントの内部に渡し、子コンポーネントは内部で親コンポーネントから渡されたメソッドを呼び出し、同時に親コンポーネントに送信するデータを、メソッドを呼び出すときにパラメータとして渡す.
親コンポーネントは、メソッドの参照を子コンポーネントに渡す.ここで、
getMsg
は、親コンポーネントのmethods
で定義するメソッド名であり、func
は、子コンポーネント呼び出しがメソッドに渡すときのメソッド名である.<son @func="getMsg">son>
サブアセンブリ内部は、
this.$emit(' ', )
によって親アセンブリのメソッドを呼び出すとともに、を使用して親アセンブリにデータを渡す.
<div>
<input type="button" value=" " @click="sendMsg" />
</div>
<span style="color:#008000;">//</span><span style="color:#008000;"> </span>
Vue.component('son'<span style="color:#000000;">, {
template: </span>'#son', <span style="color:#008000;">//</span><span style="color:#008000;"> Id</span>
<span style="color:#000000;"> methods: {
sendMsg() { </span><span style="color:#008000;">//</span><span style="color:#008000;"> </span>
<span style="color:#0000ff;">this</span>.$emit('func', 'OK'); <span style="color:#008000;">//</span><span style="color:#008000;"> , </span>
<span style="color:#000000;"> }
}
});
</span><span style="color:#008000;">//</span><span style="color:#008000;"> Vue , ViewModel</span>
<span style="color:#0000ff;">var</span> vm = <span style="color:#0000ff;">new</span><span style="color:#000000;"> Vue({
el: </span>'#app'<span style="color:#000000;">,
data: {},
methods: {
getMsg(val){ </span><span style="color:#008000;">//</span><span style="color:#008000;"> , this.$emit() , </span>
<span style="color:#000000;"> alert(val);
}
}
});
</span>
転載先:https://www.cnblogs.com/CGWTQ/p/11250309.html