根本用法
App.vue
<script>import Content from "./components/Content.vue";export default { data() { return { message: '', }; }, methods:{ getChildMsg:function (value){ console.log(value); this.message=value } }, components:{ Content }}</script><template><div> <Content><button>btn</button></Content> <Content><input type="text"></Content></div></template>
- Content.vue
<template> <div> <h2>I am content</h2> <div> <slot></slot> </div> </div></template>
具名插槽
App.vue
<script>import Content from "./components/Content.vue";export default { data() { return { message: '', }; }, methods:{ getChildMsg:function (value){ console.log(value); this.message=value } }, components:{ Content }}</script><template><div> <Content><button>btn</button></Content> <Content><input type="text"><button>btn2</button></Content> <Content> <template v-slot:button><button>btn4</button></template> <template v-slot:input><input type="text"></template> <template v-slot:h2><h2>插槽</h2></template> </Content></div></template>
- Content.vue
<template> <div> <h2>I am content</h2> <div> <slot name="button"></slot> <slot name="input"></slot> <slot name="h2"></slot> </div> </div></template>
作用域
备用内容
- App.vue
- Content.vue
<template> <div> <h2>I am content</h2> <div> <!-- 会在没有值的插槽中显示--> <slot name="button"><button>备用内容</button></slot> <slot name="input"></slot> <slot name="h2"></slot> </div> </div></template>
渲染作用域
- test
- App.vue
<script> import Content from "./components/Content.vue"; export default { data() { return { message: 'hellokugou', }; }, methods:{ getChildMsg:function (value){ console.log(value); this.message=value } }, components:{ Content } }</script><template> <div> <Content><button>btn</button></Content> <Content><input type="text"><button>btn2</button></Content> <Content> <template v-slot:button> </template> <template v-slot:input><input type="text"></template> <template v-slot:h2><h2>插槽</h2></template> </Content> <!-- 无序--> <Content> <template v-slot:default="slotProps"> <ul> <li v-for="item in slotProps.list" :key="item">{{item}}</li> </ul> </template> </Content> <!-- 有序--> <Content> <template v-slot:default="slotProps"> <ol> <li v-for="item in slotProps.list" :key="item">{{item}}</li> </ol> </template> </Content> </div></template>
- Content.vue
<template> <div> <h2>I am content</h2> <div> <!-- 会在没有值的插槽中显示--><!-- <slot name="button"><button>备用内容</button></slot>--><!-- <slot name="input"></slot>--><!-- <slot name="h2"></slot>--> <slot :list="list" :message="message"></slot> </div> </div></template><script>export default { data(){ return{ message: '你好宝贝', list: [1,2,3,4,5,6] } }}</script>