插槽在使用vue开发项目中的使用频率仍是挺高的,无论是自定义组件仍是引用的UI组件库,插槽的使用能够必定程度上提示组件的可拓展性等。vue
使用场景:单纯的想在父组件内自定义子组件的内容结构。api
// 父组件App
<template>
<div id="app">
<my-slot>
{{value}}
</my-slot>
</div>
</template>
<script>
import MySlot from './components/MySlot.vue'
export default {
name: 'app',
data() {
return {
value: 'hello world'
}
},
components: {
MySlot
}
}
</script>
// 子组件MySlot
<template>
<div>
<slot></slot>
</div>
</template>
复制代码
使用场景:更改子组件对应做用域的内容。bash
// 父组件App
<template>
<div id="app">
<my-slot>
<template v-slot:mySlot>
<div>
{{value}}
</div>
</template>
</my-slot>
</div>
</template>
<script>
import MySlot from './components/MySlot.vue'
export default {
name: 'app',
data() {
return {
value: 'hello world'
}
},
components: {
MySlot
}
}
</script>
// 子组件MySlot
<template>
<div>
<slot name='mySlot'></slot>
</div>
</template>
复制代码
使用场景:须要在父组件自定义内容中使用子组件的数据。app
// 父组件App
<template>
<div id="app">
<my-slot>
<template v-slot:mySlot='{childValue, one}'>
<div>
{{value}}
{{childValue}}
{{one}}
</div>
</template>
</my-slot>
</div>
</template>
<script>
import MySlot from './components/MySlot.vue'
export default {
name: 'app',
data() {
return {
value: 'hello world'
}
},
components: {
MySlot
}
}
</script>
// 子组件MySlot
<template>
<div>
<slot name='mySlot' :childValue='childValue' :one='one'></slot>
</div>
</template>
<script>
export default {
name: 'MySlot',
data() {
return {
childValue: 'It is child value',
one: 'one'
}
}
}
</script>
复制代码
vue@2.6.0版本废弃了slot、slot-scope,都推荐使用v-slot,具体能够前往cn.vuejs.org/v2/api/?#sl…查看更多详细内容。ui