• 说说你对slot的理解?


    首先,大概了解一下插槽:
    在这里插入图片描述

    插槽是什么

    ![在这里插入图片描述](https://img-blog.csdnimg.cn/90b04660769e49c286ee2e1821d2a2bb.png
    插槽:在HTML中 slot 元素 ,作为 Web Components 技术套件的一部分,是Web组件内的一个占位符

    该占位符可以在后期使用自己的标记语言填充

    举个例子:

    
    
    
      1
    
    
      2
    
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    template不会展示到页面中,需要用先获取它的引用,然后添加到DOM中,

    customElements.define('element-details',
      class extends HTMLElement {
        constructor() {
          super();
          const template = document
            .getElementById('element-details-template')
            .content;
          const shadowRoot = this.attachShadow({mode: 'open'})
            .appendChild(template.cloneNode(true));
      }
    })
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    插槽的应用场景

    通过插槽可以让用户可以拓展组件,去更好地复用组件和对其做定制化处理

    如果父组件在使用到一个复用组件的时候,获取这个组件在不同的地方有少量的更改,如果去重写组件是一件不明智的事情

    通过slot插槽向组件内部指定位置传递内容,完成这个复用组件在不同场景的应用

    比如布局组件、表格列、下拉选、弹框显示内容等

    插槽的分类

    slot可以分来以下三种:

    默认插槽
    具名插槽
    作用域插槽

    默认插槽

    子组件用标签来确定渲染的位置,标签里面可以放DOM结构,当父组件使用的时候没有往插槽传入内容,标签内DOM结构就会显示在页面
    父组件在使用的时候,直接在子组件的标签内写入内容即可

    具名插槽

    子组件用name属性来表示插槽的名字,不传为默认插槽

    父组件中在使用时在默认插槽的基础上加上slot属性,值为子组件插槽name属性值

    作用域插槽

    子组件在作用域上绑定属性来将子组件的信息传给父组件使用,这些属性会被挂在父组件v-slot接受的对象上

    父组件中在使用时通过v-slot:(简写:#)获取子组件的信息,在内容中使用


    总结
    v-slot属性只能在上使用,但在只有默认插槽时可以在组件标签上使用
    默认插槽名为default,可以省略default直接写v-slot
    缩写为#时不能不写参数,写成#default
    可以通过解构获取v-slot={user},还可以重命名v-slot=“{user: newName}“和定义默认值v-slot=”{user = ‘默认值’}”

  • 相关阅读:
    Windows10+Ubuntu20 双系统安装
    vscode终端命令报错
    LEADTOOLS 入门教程: 将注释刻录到图像上的 C# .NET Core 控制台应用程序
    Notion 程序猿必备笔记软件
    易基因|ctDNA甲基化测序分析(ctDNA-WGBS)用于癌症检测和分子分型 | 精准医学
    深入理解 Nginx 的负载均衡与反向代理
    hadoop生态圈面试精华之zookeeper(二)
    gitpod,不用clone代码就可以让项目在线上跑起来
    VR数字工厂,为企业工厂打造竞争新优势
    手机快充协议
  • 原文地址:https://blog.csdn.net/www61621/article/details/128186365