見出し画像

Vue.js 入門 (5) - プロジェクトによるWebアプリの作成

プロジェクトによるWebアプリの作成手順をまとめました。

・Vue 2.6.14

前回

1. プロジェクトによるWebアプリの作成

プロジェクトによるWebアプリの作成手順は、次のとおりです。

(1) 「Vue.js 入門 (3) - プロジェクトの作成」と同様にプロジェクトの作成を行う。
(2) 「src/components/HelloWorld.vue」を次のように編集。

<!-- テンプレート -->
<template>
  <div>
    {{message}}
  </div>
</template>

<!-- スクリプト -->
<script>
export default {
  name: "HelloWorld",
  props: {
    message: String
  }
}
</script>

<!-- スタイル -->
<style>
div {
  color: #ff0000
}
</style>

◎ テンプレートの定義
テンプレートの定義は、<template></template>で囲みます。今回の中身は、message変数の表示のみです。

◎ スクリプトの定義
スクリプトの定義は、<script></script>で囲みます。以下の書式で、コンポーネントの名前とプロパティを定義します。

export default {
  name: コンポーネント名,
  props: {
    プロパティ名: 型,
        :
  },

}

◎ スタイルの定義
スタイルを指定します。今回はdivを赤くしてます。

(3) 「src/App.vue」を次のように編集。

<!-- テンプレート -->
<template>
  <div>
    <HelloWorld message="Hello Vue!"></HelloWorld>
  </div>
</template>

<!-- スクリプト -->
<script>
import HelloWorld from './components/HelloWorld.vue'

export default {
  name: "App",
  components: {
    HelloWorld
  }
}
</script>

<!-- スタイル -->
<style>
</style>

◎ テンプレートの定義
HelloWorldコンポーネントを1つ配置しています。属性messageに「Hello Vue!」を指定しています。

◎ スクリプトの定義
名前にApp、利用するコンポーネントにHelloWorldを指定しています。

◎ スタイルの定義
スタイルを指定します。今回は未指定です。

(4) プロジェクトフォルダ(hello_app)に移動し、以下のコマンドでプロジェクトを実行。

$ yarn serve

 ​(5) ブラウザで「http://localhost:8080/」を開く。
以下の画面が表示されます。

画像1

2. 親コンポーネントから子コンポーネントへの値渡し

親コンポーネントから子コンポーネントへの値渡しの例は、次のとおりです。

・HelloWorld.vue

<!-- テンプレート -->
<template>
  <div>
    {{message}}
  </div>
</template>

<!-- スクリプト -->
<script>
export default {
  name: "HelloWorld",
  props: {
    message: String
  }
}
</script>

<!-- スタイル -->
<style>
</style>

・App.vue

<!-- テンプレート -->
<template>
  <div>
    <HelloWorld v-bind:message="message"></HelloWorld>
    <button v-on:click="onClick">メッセージ入力</button>
  </div>
</template>

<!-- スクリプト -->
<script>
import HelloWorld from './components/HelloWorld.vue'

export default {
  name: "App",
  components: {
    HelloWorld
  },
  data: function() {
    return {
        message: "Hello Vue!"
    }
  },
  methods: {
    onClick: function() {
      this.message = prompt("メッセージ:")
    }
  },  
}
</script>

<!-- スタイル -->
<style>
</style>

◎ 親コンポーネントから子コンポーネントへの値渡し
親コンポーネントの処理での、子コンポーネントの属性の更新で、値を渡します。​

実行結果は、次のとおりです。

画像2

3. 子コンポーネントから親コンポーネントへの値渡し

子コンポーネントから親コンポーネントへの値渡しの例は、次のとおりです。

・HelloWorld.vue

<!-- テンプレート -->
<template>
  <div>
    <button v-on:click="onClick">メッセージ入力</button>
  </div>
</template>

<!-- スクリプト -->
<script>
export default {
  name: "HelloWorld",
  methods: {
    onClick: function() {
      var message = prompt("メッセージ:")
      this.$emit("result-event", message)
    }
  }
}
</script>

<!-- スタイル -->
<style>
</style>

・App.vue

<!-- テンプレート -->
<template>
  <div>
    <div>{{result}}</div>  
    <HelloWorld v-on:result-event="onResult"></HelloWorld>
  </div>
</template>

<!-- スクリプト -->
<script>
import HelloWorld from './components/HelloWorld.vue'

export default {
  name: "App",
  components: {
    HelloWorld
  },
  data: function() {
    return {
        result: "Hello Vue!"
    }
  },
  methods: {
    onResult: function(message) {
      this.result = message
    }
  },  
}
</script>

<!-- スタイル -->
<style>
</style>

◎ 子コンポーネントから親コンポーネントへの値渡し
子コンポーネントの処理での、$emit()の呼びだしで、値渡しを行います。$emit()は、そのコンポーネント自身のタグイベントを発生させます。

this.$emit(イベント, 引数,...)
<コンポーネント名 v-on:イベント=メソッド>

実行結果は、次のとおりです。

画像2

次回


この記事が気に入ったらサポートをしてみませんか?