vue中slot插槽


插槽里边我们需要着重记忆的
插槽内容
具名插槽
作用域插槽
解构插槽

什么是slot

在标签中写的内容会自动出现在slot组件中

如果有了slot 我们可以让组件变得更加丰富多彩

如果有多个slot 那么组件标签中的内容就会出现在所有默认的slot中

具名插槽(具有名字的插槽)

        如果一个组件模板中有多个slot组件标签  为了合理的分配slot 我们可以给slot添加name属性
        给它起名字

        组件模板
            {
                template: `
                    <div>
                        <slot name="自定义名字1"></slot>
                        <slot name="自定义名字2"></slot>
                        ...
                    </div>
                `
            }

        组件中(让第一个slot对应渲染p元素  第二个slot对应渲染div元素)
            <组件标签>
                <p slot="自定义名字1">1111</p>
                <div slot="自定义名字2">222</div>
            </组件标签>

独占 默认插槽

        一个组件模板中 只有一个slot 并且这个slot没有设置name属性
        这种形式我们称之为 独占 默认插槽
        如果只有一个slot 则该slot有一个默认名 叫 default

    后备内容
        当组件被调用 但是组件标签中间没有写内容  我们想让它显示默认一些内容  这个时候可以使用后备内容
        
        使用就是
            在组件中slot插槽标签中间可以写上默认的内容  当组件被调用 但是组件中没有写内容  则显示slot
            组件中的默认内容  如果写了内容 则正常显示写入的内容

作用域插槽

        有时让插槽内容能够访问子组件中才有的数据是很有用的

        (1)使用slot-scope进行子组件数据的获取
                1.在子组件模板中添加slot 并在slot标签上进行数据的绑定
                    template: `
                        <div class="test">
                            <slot :自定义名称="传递内容"></slot>
                        </div>
                    `

                2 在对应的子组件标签内容上 写上template标签  在标签上使用slot-scope进行数据接收
                    <子组件标签>
                        <template slot-scope="新的自定义名称">
                           <p>{{新的自定义名称}}</p>  
                           // 这里返回的数据是一个对象 可以根据需求进行二次取值
                        </template>
                    </子组件标签>
                    
                    另一种也可以直接将slot-scope直接写在需要获取数据的标签上边
                        <p slot-scope="新的自定义名称">{{新的自定义名称}}</p>


        (2)在vue2.6.0新增 v-slot指令(具名插槽 作用域插槽)
            缩写:
                #

            1 在子组件的模板中 如果只有一个slot标签
             v-slot 或者 v-slot:default 叫做独占默认插槽 
             <子组件标签>
                <template v-slot:default="新的自定义名称">  // #default
                    <p>{{新的自定义名称}}</p>
                </template>
             </子组件标签>

             注意:
                v-slot指令只能用在template组件标签 或者 components上边

    解构插槽
        可以直接将得到的对象或者是数组 结构开来 直接拿取里边的属性
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜空孤狼啸

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值