本文简单介绍一下vue中的插槽相关的知识点,包括插槽的概念,类型,和具体使用。内容比较简单,适合入门。
目录
插槽的类型
默认插槽的使用
默认插槽的使用案例
具名插槽的使用
具名插槽使用-其一
具名插槽使用-其二
作用域插槽的使用
默认插槽中使用作用域插槽
具名插槽中使用作用域插槽
- 默认插槽 --- default
- 具名插槽 -- name
- 作用域插槽 -- v-slot
我们将根据这三种类型,进行讲解。
在自定义组件中使用
使用组件的时候,这个组件内的插槽就会为内容先占个位置,相当于一个占位符。
如
{
components: {
'MyComponent': {
template: ` `
}
}
}
// 使用组件
这个位置就是需要显示的数据
先上代码
在dom结构中,我们直接去使用组件,这样组件内的插槽也就会被使用。插槽为组件的内容占了个位置。
如果在使用组件时候在双标签内写入了内容,就显示写入的内容,否则显示插槽内写入的默认的内容。
有BUG
有一个警告
默认插槽其实就是在组件注册的时候,在template里面写入了一个
Vue.component('alert-box', {//注册这个组件
//在template里面写入插槽 ,并且写入默认内容,来为内容占位置
template: `
ERROR:
默认内容
`
})
let vm = new Vue({
el: "#app",
data: {
}
})
结果:
具名插槽就是给
如
{
components: {
'MyComponent': {
template: ` `
}
}
}
// 使用组件
先上代码
如后h5代码所示,我们设置了头部,底部和主体内容。为了就是使用具体插槽去渲染不同的dom节点。
标题信息
主题内容
主题内容
底部信息
// 声明组件
Vue.component('base-layout', {
//template中,我们分别给插槽 取名header和footer
// 在main中的是没有名字的默认插槽
//在使用这个组件渲染页面dom结构,页面的内容会根据插槽的名字来具体渲染结构
template: `
`
})
let vm = new Vue({
el: "#app",
data: {
}
})
结果
我们在template模板中使用一下具名插槽,就是在 元素上使用
slot
指令,把slot作为的一个属性来用。
标题信息
标题信息
标题信息
主题内容
主题内容
底部信息
Vue.component('base-layout', {
template: `
`
})
let vm = new Vue({
el: "#app",
data: {
}
})
结果
在父组件使用插槽时需要访问子组件中的数据,这个时候就需要使用作用域插槽
使用方法:
把data 变量名作为
// 示例
代码如下
我叫:{{slotProps.detail.name}}
我的爱好是:{{slotProps.detail.love}}
Vue.component('myList', {
template: `
`,
data: function () {
return {
detail: {
name: '张三',
love: 'No coding'
}
}
}
})
let vm = new Vue({
el: "#app",
data: {
}
})
结果:
具名插槽必须在
代码如下
我叫:{{slotProps.detail.name}}
我的爱好是:{{slotProps.detail.love}}
Vue.component('myList', {
//在template内的slot里面,别忘了写这个插槽的名字
template: `
`,
data: function () {
return {
detail: {
name: '张三',
love: 'No working'
}
}
}
})
let vm = new Vue({
el: "#app",
data: {
}
})
结果: