奇怪的作用域插槽

本文详细介绍了Vue.js中的作用域插槽,包括其概念、使用方法和特殊点。作用域插槽允许父组件访问子组件内部的数据,通过在子组件中定义属性并传递给插槽,然后在父组件中使用`slot-scope`接收并访问这些数据。文中还提到了如何在父组件中打印子组件传入的数据以确定属性名,以及推荐的编写规范。作用域插槽是Vue组件间通信的一种重要方式,提高了代码复用性和灵活性。
摘要由CSDN通过智能技术生成

作用域插槽

概念

在父组件中依旧能够使用到子组件中定义的数据

方法

在子组件中如此定义:

<slot name='er' :hello='note'>默认内容</slot>

其中:
name是给当前插槽定义的名字,目的是为了在具有多个插槽的情况下,在父组件中可以通过名字来准确锁定当前的template是写给哪一个插槽的
hello是自定义的一个属性名,目的是将note以属性值挂载在插槽模块里
note是我在data中定义的数据

在父组件中如此接收:

<template #er='scoped'>
                 {{scoped.hello.aa}}
         </template>

其中:
slot是对于子组件插槽中name的锁定
slot-scope是对于子组件中:hello挂载属性值的接收
scoped是自定义的成员变量名,在此处作为接收属性值的载体
scoped.hello.aa是在接收的成员变量中寻找作为挂载属性名的hello,然后在hello中找到要使用的数据

数据的定义如下:

data(){
    return {
        note:{
            aa:'hello',
            bb:'hi'
        }
        }

特殊点

1.如果不写作用域插槽,name在父组件中的接收可以写为v-slot=‘name’,或者#name,但是如果写了,就需要写成slot=‘name’ ,slot-scope=‘自定义成员变量名’,否则会报错
2.如果只写单个作用域插槽,可以在子组件插槽中不写name,在父组件接收的时候直接写v-slot=‘自定义成员变量名’
3.太多了,不写了

推荐写法

1.建议给每个插槽都配置一个name属性,并在父组件中锁定name再给填充内容
2.在父组件中这么进行接收:

<template v-slot:er='scoped'></template>
//或<template #er='scopes'></template>

3.当不知道子组件中传入数据时使用的属性名时,可以如下打印:

<template v-slot:er='scoped'>
{{scoped}}
</template>

可以将 传入的值打印出来,打印出来数据中的对象名就是子组件中使用的属性名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值