私はVueを初めて使用し、Vue 2.2.1
を使用しています。私はそれが親によって定義されたレイアウトを持つことができる再利用可能なコンポーネントを作成することが可能かどうか疑問に思っています。Vue jsで親からの子コンポーネントのレイアウトを定義する
// Parent template
<template>
<ul>
<li v-for="item in items">
<item-component :id="item.id">
<h1><item-title /></h1>
<p>
<item-description />
</p>
</item-component>
</li>
</ul>
</template>
// Child definition
<script>
export default {
data() {
return {
title: '',
description: ''
}
}
create() {
// do some async fetch
fetch(this.id)
.then((result) {
this.$data.title = result.title
this.$data.description = result.description
})
}
}
</script>
ので、ユースケースは、子コンポーネントは、IDによるデータのフェッチのために責任があるが、親がデータをレイアウトする責任があるということです。たとえば、以下の擬似コードを考えてみましょう。こうすることで、フェッチロジックを1か所に保つことができますが、さまざまな場所でデータを再フォーマットすることができます。
これが可能かどうかはわかりません。私は子供のフェッチ機能をmixinに取り出すことができると思いますが、レイアウトのバリエーションごとに新しいコンポーネントを作成する必要があります。 Vueでこれを処理するための推奨される方法は何ですか?
スコープ付きスロットを使用します。 https://vuejs.org/v2/guide/components.html#Scoped-Slots – Bert