親から小へデータを受け渡す方法 【
→
】
・子コンポーネント
Child.vue
<template>
<!-- 親コンポーネントから値を受け取るための箱を用意する -->
<p>{{ value }}</p>
</template>
<script>
export default {
// 親コンポーネントから値を受け取る為に、propsを定義する(複数定義することも可)
props: ["value"],
}
</script>
・親コンポーネント
Parent.vue
<template>
<div>
<!-- 子コンポーネント側で定義したpropsのプロパティに、
データを入れて子コンポーネントへ渡す(動的に値を変更する場合は、「v-bind」を使う) -->
<Child value="親から子へ"></Child>
</div>
</template>
<script>
// 子コンポーネントをインポート
import Child from './components/Child'
export default {
/* template内でコンポーネントが利用できるように、
componentsプロパティに子コンポーネントをセット */
components: {
Child,
}
}
</script>
子から親へデータを受け渡す方法 【
→
】
・子コンポーネント
Child.vue
<template>
<div>
<!-- 親コンポーネントから値を受け取るための箱を用意する -->
<p>{{ value }}</p>
<!-- ボタンを押した時に、親コンポーネント側でカスタムイベントを発火 -->
<button @click="change">値を変更</button>
</div>
</template>
<script>
export default {
// 親コンポーネントから値を受け取る為に、propsを定義する(複数定義することも可)
props: ["value"],
methods: {
change() {
// 親コンポーネントへ値を送る為のカスタムイベントを作成
this.$emit("receive", this.value = "子から親へ");
}
}
}
</script>
・親コンポーネント
Parent.vue
<template>
<div>
<!-- 子コンポーネントのボタンが押されると、
親コンポーネントのカスタムイベントが発火する -->
<Child value="親から子へ" @receive="changeValue"></Child>
</div>
</template>
<script>
// 子コンポーネントをインポート
import Child from './components/Child';
export default {
/* template内でコンポーネントが利用できるように、
componentsプロパティに子コンポーネントをセット */
components: {
Child,
},
methods: {
// 子コンポーネントで定義した$emitの第2引数を受け取る
changeValue(value) {
// 値を入れ替える
this.value = value;
}
}
}
</script>
HTMLコードを子コンポーネントへ受け渡す方法 【
→
】
・子コンポーネント
Child.vue
<template>
<div>
<!-- 受け口としてslotタグを配置
親コンポーネント側のHTMLがslotタグと置き換わる -->
<slot></slot>
</div>
</template>
・親コンポーネント
Parent.vue
<template>
<div>
<!-- 送り口として、コンポーネントタグ内にHTMLを記述 -->
<Child>
<h1>HTMLを</h1>
<h2>子コンポーネントへ</h2>
</Child>
</div>
</template>
<script>
// 子コンポーネントをインポート
import Child from './components/Child';
export default {
/* template内でコンポーネントが利用できるように、
componentsプロパティに子コンポーネントをセット */
components: {
Child,
},
}
</script>