根本用法
-
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>