やりたいこと
あるコンポーネントを複数のVueファイルから呼ぶ。このとき、表示する文字を呼び出し元ごとに変えたい
components/MyComponent.vue
<template> <div> <h1>ここは親ページによってタイトルを変えたい</h1> </div> </template>
<template> <div class="container"> <MyComponent> ここはcomponentsページです </MyComponent> </div> </template> <script> import MyComponent from '~/components/MyComponent.vue' export default { components: { MyComponent } } </script>
やり方
components/MyComponent.vueを以下にするだけ。親は特に弄ることはない
<template> <div> <h1> <slot /> </h1> </div> </template>
複数渡したい場合
名前をつけてあげる
components/MyComponent.vue
<template> <div> <h1> <slot name="title" /> </h1> <p> <slot name="date" /> </p> </div> </template>
pages/components.vue
<template> <div class="container"> <MyComponent> <template v-slot:title> ここはcomponentsページです </template> <template v-slot:date> 2020-06-16 </template> </MyComponent> </div> </template> <script> import MyComponent from '~/components/MyComponent.vue' export default { components: { MyComponent } } </script>