vue slot作用域插槽、具名插槽

1 篇文章 0 订阅

vue插槽在项目中应用的还是比较广泛的, 特别是公用组件的封装, 更能体现插槽的实用性。

1,默认插槽

这个就很好理解了, 通过标签, 父组件引用子组件之后, 子组件中间内容都会默认slot所在位置

2,具名插槽

顾名思义,就是有名字的插槽, 示例如下:

**child-block.vue**
<div>
	<div>我是小林, 下面是我的个人简介:</div>
	<slot name="userInfo" ></slot>
	<slot name="friend"></slot>
</div>
**parent-block.vue**
<div>
	<child-block>
		<div slot="userInfo">我的名字是小林, 今年18岁</div>
		<div slot="friend">我有很多朋友,有小慧,小真....</div>
	</child-block>
</div>

渲染结果如下:

我是小林,下面是我的个人简介:
我的名字是小林, 今年18岁
我有很多朋友,有小慧, 小真…

当然位置随意放。

3,作用域插槽

如果父组件要用到子组件中的内容就会用到作用域插槽, 示例如下:

**child-block.vue**
<div>
	<div>我是小林, 下面是我的个人简介:</div>
	<slot name="userInfo" :info="info"></slot>
	<slot name="friend" :friend="friend"></slot>
</div>
export default {
	data () {
		info: {
			name: '小林',
			age: 18
		},
		friend: '我有很多朋友,有小慧,小真....'
	}
}
**parent-block.vue**
<div>
	<child-block>
		<template v-slot:userInfo="scope">
			<div>
					我的名字是{{ scope.info.name }},今年{{ scope.info.age}}岁
			</div>
		</template>
		<template #friend="{ friend }">
			<div>{{ friend }}</div>
		</template>
	</child-block>
</div>

渲染结果跟具名插槽是一样的结果

我是小林,下面是我的个人简介:
我的名字是小林, 今年18岁
我有很多朋友,有小慧, 小真…

其中#friend采用了插槽的省略写法, {friend}采用了解构插槽的写法。

当然, 如果插槽没有写名字的话, 可以采用以下写法也是可以的:

// 1,省略
<template v-slot="scope">
	<div>{{ scope.friend }}</div>
</template>

// 默认写法
<template v-slot:default="scope">
	<div>{{ scope.friend }}</div>
</template>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值