Vue.js 入門 (2) - コンポーネント
Vue.jsの「コンポーネント」に使い方ついてまとめました。
・Vue 2.6.14
前回
1. コンポーネント
「コンポーネント」は、名前付きの再利用可能なVueインスタンスです。
「コンポーネント」の例は、次のとおりです。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://unpkg.com/vue"></script>
</head>
<body>
<!-- テンプレート -->
<div id="app">
<hello></hello>
</div>
<!-- スクリプト -->
<script>
Vue.component("hello",
{
template: "<div>Hello Vue!</div>"
})
var app = new Vue({
el: "#app",
})
</script>
</body>
</html>
◎ コンポーネント
コンポーネントの定義には、Vue.component()を使います。今回はtemplateプロパティでテンプレートを指定しています。
Vue.component(コンポーネント名, {プロパティ名:プロパティ値,...})
コンポーネントの利用は、次のようにタグ形式で記述します。
<コンポーネント名/>
実行結果は、次のとおりです。
2. 変数の利用
変数の利用の例は、次のとおりです。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://unpkg.com/vue"></script>
</head>
<body>
<!-- テンプレート -->
<div id="app">
<hello></hello>
</div>
<!-- スクリプト -->
<script>
Vue.component("hello",
{
data: function() {
return {
name: "JavaScrpt"
}
},
template: "<div>Hello {{name}}!</div>"
})
var app = new Vue({
el: "#app",
})
</script>
</body>
</html>
◎ 変数の利用
変数は、dataプロパティで定義します。
data: function() {
return {
変数名: 変数値,
:
}
}
実行結果は、次のとおりです。
3. 属性の利用
属性の利用の例は、次のとおりです。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://unpkg.com/vue"></script>
</head>
<body>
<!-- テンプレート -->
<div id="app">
<hello name="Vue"></hello>
<hello name="JavaScript"></hello>
</div>
<!-- スクリプト -->
<script>
Vue.component("hello",
{
props: ["name"],
template: "<div>Hello {{name}}!</div>"
})
var app = new Vue({
el: "#app",
})
</script>
</body>
</html>
◎ 属性の利用
属性は、propsプロパティで定義します。
props: [属性名,...]
属性の型(String, Number, Boolean, Array, Object)で値の型を限定することもできます。
props: [属性名:属性の型,...]
実行結果は、次のとおりです。
4. 属性のデータバインディング
属性のデータバインディングの例は、次のとおりです。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://unpkg.com/vue"></script>
</head>
<body>
<!-- テンプレート -->
<div id="app">
<hello v-for="item in items" v-bind:name="item"></hello>
</div>
<!-- スクリプト -->
<script>
Vue.component("hello",
{
props: ["name"],
template: "<div>Hello {{name}}!</div>"
})
var app = new Vue({
el: "#app",
data: {
items: ["Vue", "JavaScript", "HTML", "CSS"]
}
})
</script>
</body>
</html>
◎ 属性のデータバインディング
属性のデータバインディングには、v-bindを使います。
<要素名 v-bind:属性名="プロパティ名">
実行結果は、次のとおりです。
5. フォーム入力バインディング
フォーム入力バインディングの例は、次のとおりです。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://unpkg.com/vue"></script>
</head>
<body>
<!-- テンプレート -->
<div id="app">
<hello v-bind:name="name"></hello>
<input type="text" v-model="name">
</div>
<!-- スクリプト -->
<script>
Vue.component("hello",
{
props: ["name"],
template: "<div>Hello {{name}}!</div>"
})
var app = new Vue({
el: "#app",
data: {
name: ""
}
})
</script>
</body>
</html>
◎ フォーム入力バインディング
フォーム入力バインディングするには、v-modelを使います。
<要素名 v-mode=プロパティ名>
実行結果は、次のとおりです。
6. イベント
イベントの例は、次のとおりです。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://unpkg.com/vue"></script>
</head>
<body>
<!-- テンプレート -->
<div id="app">
<hello></hello>
</div>
<!-- スクリプト -->
<script>
Vue.component("hello",
{
data: function() {
return {
count: 0
}
},
methods: {
onClick: function($event) {
this.count++
}
},
template: "<div v-on:click='onClick'>カウント: {{count}}</div>"
})
var app = new Vue({
el: "#app",
})
</script>
</body>
</html>
◎ イベント
イベントの利用にはv-on、イベントの定義にはmethodsを使います。メソッドはユーザー操作によるイベント発生時に呼び出されます。
<要素名 v-on:イベント名:メソッド名>
methods: {
メソッド名: function() { 処理 }
}
実行結果は、次のとおりです。
7. 算術プロパティ
算術プロパティの例は、次のとおりです。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://unpkg.com/vue"></script>
</head>
<body>
<!-- テンプレート -->
<div id="app">
<hello></hello>
</div>
<!-- スクリプト -->
<script>
Vue.component("hello",
{
data: function() {
return {
num: 0
}
},
computed: {
calc: function(event) {
return this.num*this.num
}
},
template: "<div><input type='number' v-model='num'><br>2乗: {{calc}}</div>"
})
var app = new Vue({
el: "#app",
})
</script>
</body>
</html>
◎ 算術プロパティ
算術プロパティの定義には、computedを使います。依存する値が更新された時にメソッドが呼ばれます。
computed: {
算術プロパティ名: function(event) { return 値 }
}
実行結果は、次のとおりです。
8. ローカルコンポーネント
ローカルコンポーネントの例は、次のとおりです。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://unpkg.com/vue"></script>
</head>
<body>
<!-- テンプレート -->
<div id="app">
<hello></hello>
</div>
<!-- スクリプト -->
<script>
Vue.component("hello",
{
data: function() {
return {
num: 0
}
},
computed: {
calc: function(event) {
return this.num*this.num
}
},
template: "<div><input type='number' v-model='num'><br>2乗: {{calc}}</div>"
})
var app = new Vue({
el: "#app",
})
</script>
</body>
</html>
◎ グローバルコンポーネントとローカルコンポーネント
コンポーネントには、「グローバルコンポーネント」と「ローカルコンポーネント」があります。
・グローバルコンポーネント
スクリプトのどこでも利用できるコンポーネントです。Vue.component()で定義します。
・ローカルコンポーネント
Vueインスタンス内で利用できるコンポーネントです。Vueインスタンスのcomponentsで定義します。
実行結果は、次のとおりです。
次回
この記事が気に入ったらサポートをしてみませんか?