Vue.jsを初めて使用し、単一ファイルコンポーネントを使用したいのですが、ワークフローがわかりません。
たとえば、3つのコンポーネントがあります:App
、Grid
およびList
App.vue
<template>
<div id="app">
<div id="grid"></div>
<div id="right"></div>
</div>
</template>
<script>
export default {
name: 'app',
data () {
return {
message: 'Hello Vue!'
}
}
}
</script>
Grid.vue
<template>
<div id="left"></div>
</template>
<script>
export default {
name: 'grid',
data: function () {
return {
grid: 'some-data'
}
}
}
</script>
List.vue
<template>
<div id="right"></div>
</template>
<script>
export default {
name: 'list',
data: function () {
return {
text: 'some-text'
}
}
}
</script>
Main.js
import Vue from 'vue'
import App from './vue/App.vue'
import Grid from './vue/Grid.vue'
import PatternList from './vue/PatternList.vue'
new Vue({
el: '#app',
render: h => h(App)
});
new Vue({
el: '#grid',
render: h => h(Grid)
});
new Vue({
el: '#right',
render: h => h(PatternList)
});
動作しますが、ネストされたコンポーネントを作成する正しい方法ではないことを願っています。
誰もそれが行われるべき方法を示すことができますか?ありがとう
Vue.component
メソッド を使用してコンポーネントを登録できます。
import Vue from 'vue'
import App from './vue/App.vue'
import Grid from './vue/Grid.vue'
import PatternList from './vue/PatternList.vue'
Vue.component('grid', Grid);
Vue.component('pattern-list', PatternList);
new Vue({
el: '#app',
render: h => h(App)
});
そして、タグ名を使用してApp
テンプレートに直接追加します:
<template>
<div id="app">
<grid></grid>
<pattern-list></pattern-list>
</div>
</template>
これはコンポーネントをグローバルに登録します。つまり、任意のVueインスタンスは追加のセットアップなしでそれらのコンポーネントをテンプレートに追加できます。
次のように、コンポーネントをVueインスタンスに登録することもできます。
new Vue({
el: '#app',
render: h => h(App),
components: {
'grid': Grid,
'pattern-list': PatternList
}
});
または、単一ファイルコンポーネントのscript
タグ内:
<script>
import Grid from './vue/Grid.vue'
export default {
name: 'app',
components: {
'grid': Grid,
'pattern-list': PatternList
}
});
</script>
これは、コンポーネントをそのVueインスタンスに登録します。つまり、登録されたコンポーネントは、そのVueインスタンスのテンプレート内でのみ使用できます。子コンポーネントこれらのコンポーネントも子Vue=インスタンスに登録されていない限り、これらの登録済みコンポーネントにアクセスできません。