父組件想要引入子組件,但又不能直接修改子組件內容(比如子組件被多個界面引用,但別的頁面並不需要此界面添加的內容),該如何額外添加顯示內容呢?
廢話不多說,直接上
普通插槽
父組件
<template> <div> <div >大家好我是父組件</div> <son> <p>測試一下吧內容寫在這里了能否顯示</p> </son> </div> </template>
子組件
<template> <div> <div>我是子組件</div> <slot /> </div> </template>
效果
具名插槽
父組件 <son> <!-- <p>測試一下吧內容寫在這里了能否顯示</p> --> <!-- slot="x" Vue2.x寫法,3.x不支持了 --> <!-- <p slot='具名插槽A'>具名A</p> --> <template v-slot:具名插槽A>具名A</template> <template v-slot:具名插槽B>具名B</template> <template v-slot:具名插槽C>具名C</template> </son> 子組件 <slot name="具名插槽A" /> <slot name="具名插槽B" /> <slot name="具名插槽C" />
效果
作用域插槽
父組件 當然也可以直接解構出來 <template v-slot:default="slotProps"> <span>{{slotProps.count}}</span> </template> 子組件 <slot :count="count"/> export default { data() { return { count: 100, } }, }
效果