Vue.js / JSON から情報を引っ張ってくる その8

やること
- Vue Router を使用してコンポーネント間のメソッドの受け渡しする。
ファイル構成
myButton.vue で仕込んだクリックイベントを App.vue へ渡す。
.
├── index.js
├── App.vue
├── /router/
| └── index.js
└── /components/
└── /page/
| ├── top.vue
| └── about.vue
└── /common/
| ├── myHeader.vue
| └── myFooter.vue
└── /element/
└── /button/
└── myButton.vue
index.js
受け渡しとはあまり関係ないですが、Vue Router を使う
import Vue from 'vue'
import Router from 'vue-router'
import top from '@/components/page/top'
import about from '@/components/page/about'
Vue.use(Router)
export default new Router({
routes: [
{
path: "/",
name: 'top',
component: top
},
{
path: "/about",
name: 'about',
component: about
}
]
})
App.vue
myButton.vue で仕込んだ ‘event-test’ のメソッドを myButton のクリックイベントとして登録
<template>
<div id="app">
<myHeader></myHeader>
<main>
<router-view></router-view>
<myButton @event-test="clickAlert"></myButton>
</main>
<myFooter></myFooter>
</div>
</template>
<script>
import "normalize.css";
import myHeader from './components/common/myHeader.vue';
import myFooter from './components/common/myFooter.vue';
import myButton from './components/element/button/myButton.vue';
export default {
name: 'App',
components: {
myHeader,
myFooter,
myButton
},
methods: {
clickAlert: function(event) {
alert('event test');
}
}
}
</script>
myButton.vue
‘event-test’ を $emit しておく
<template>
<button @click="emitEventTest">Button</button>
</template>
<script>
export default {
name: 'myButton',
methods: {
emitEventTest () {
this.$emit('event-test',event)
}
}
}
</script>
まとめ
- やること簡単にしようと思ってたらJSONは関係のない内容になってしまった。(前回の引き継いだ結果、ちょっと複雑になりすぎたので、簡単なコンテンツ内容にして進めるようにしました。)
- 次回はこれをベースにポートフォリオのサイトを作るの目標にします。ふつうのWebサイトなら Vue.js 使って構築できそうな気がしてきました。
- コンポーネントについては、Vue.jsコンポーネント入門 | Hypertext Candy がわかりやすそうです。
ほか参考にした記事など
- 3連休だしVue.jsをはじめよう:コンポーネントを使ってみる - 豆腐とコンソメ
- vue.js でコンポーネント間でデータ受け渡しとイベント発行周り - Qiita
- [【Vue.jsでSPAへの移行】コンポーネントを使ってみよう | orizuru](