vue slot插槽_笔记本内存条插槽显示4个

vue slot插槽_笔记本内存条插槽显示4个为什么使用slotslot(插槽)在生活中很多地方都有插槽,电脑usb的插槽,插板当中的电源插槽插槽的目的是为了让我们原来的设备具备更多的扩展性比如电脑的USB我们可以插入U盘,手机,鼠标,键

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

为什么使用slot

 

slot(插槽)

  • 在生活中很多地方都有插槽,电脑usb的插槽,插板当中的电源插槽
  • 插槽的目的是为了让我们原来的设备具备更多的扩展性
  • 比如电脑的USB我们可以插入U盘,手机,鼠标,键盘等等
     

组件中的插槽

  • 组件的插槽也是为了让我们的组件更具有扩展性
  • 让使用者决定组件内部的一些内容到底展示什么
     

例子

  • 移动开发中,几乎每个页面都有导航栏
  • 导航栏我们必然封装成一个插件
  • 一旦有了这个组件,我们就可以在多个页面中复用了
     

如何封装这类组件(slot)

  • 最好的封装方式就是将共性抽取到组件中,将不同的部分暴露为插槽
  • 一旦我们预留了插槽,就可以让使用者根据自己的需求,决定插槽中插入什么内容
  • 是搜索框,是文字,是按钮,由调度者自己决定
     

插槽的案例

<div id="app">
  <cpn><button>按钮</button></cpn>
  <cpn><p>hello world</p></cpn>
  <cpn><p>666</p></cpn>
</div>
<template id="cpn">
  <div>
    <h2>我是组件</h2>
    // 插槽预留的位置,方便使用者自己填写
    <slot></slot>
  </div>
</template>
<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: "#app",
    components: {
      "cpn": {
        template: `#cpn`,
      }
    }
  })
</script>

上述代码干了以下事情
1.定义了子组件cpn,然后在子组件中预留了一个插槽,插槽的内容由用户填写
2.父组件中使用了3次子组件,3个子组件分别给插槽填写了不同的内容

最后展示效果如下
vue slot插槽_笔记本内存条插槽显示4个
 

插槽默认值

如果我们需要大量使用这个组件,而且组件预留的插槽,我们大多数都是填写的返回按钮,只有极少数填写其他的,那么这种情况就可以为插槽设置一个默认值

<div id="app">
  <cpn></cpn>
  <cpn></cpn>
  <cpn></cpn>
</div>
<template id="cpn">
  <div>
    <slot><button>返回</button></slot>
  </div>
</template>

我们在子组件中设置了一个默认值为返回按钮的插槽,那么父组件在使用时如果不填写任何内容,那么默认就是返回按钮
 

具名插槽

有时我们需要多个插槽。例如对于一个带有如下模板的组件:

<template id="cpn">
  <div>
    <slot name="header"><span>头部</span></slot>
    <slot name="main"><span>中间</span></slot>
    <slot name="footer"><span>页脚</span></slot>
  </div>
</template>

我们在组件中预留了3个插槽,但是这里指定了3个名字,后续父组件使用v-slot指定name属性后就能填写自己的内容,比如如下代码

<div id="app">
  <cpn>
    <template v-slot:header>
      <p>header头部</p>
    </template>
    <template v-slot:footer>
      <p>footer页脚</p>
    </template>
  </cpn>
</div>

使用了cpn组件,然后指定了插槽name属性为headerfooter的内容,指定后自己填写的内容就会替换默认的内容。
注意:这里的语法格式是固定的,必须在使用template标签上绑定v-slot:插槽的名字
 

编译作用域

通过外面传给组件的变量,在以后使用插槽的时候是不能使用的

<div id="app">
  <cpn v-show="isShow"></cpn>
</div>
<template id="cpn">
  <p>hello</p>
</template>
<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: "#app",
    data: {
      isShow: true
    },
    components: {
      "cpn": {
        template: `#cpn`,
        data(){
          return{
            isShow: false
          }
        }
      }
    }
  })
</script>

上面我们定义了子组件cpn,子组件中有属性isShow,app实例中也定义了属性isShow,最后使用子组件cpn时使用了v-show,当值为true显示,值为false不显示
问题:v-show中的isShow的值是实例中的true还是子组件中的false
答案:true,因为你使用的时候是在app实例范围内,所以isShow会去从实例中的data去查找,虽然你是在cpn子组件中绑定的,但是这里的cpn你只需要把他当做普通的标签即可,如果你想让isShow的值为false,那么你只需要在子组件的template模板中使用<p v-show="isShow">hello</p>
 

作用域插槽

默认在插槽中的代码只能使用全局Vue中的属性,如果想要使用自定义组件中的属性,那么需要在定义slot的时候使用v-bind来进行绑定。

<div id="app">
  <cpn>
    <template v-slot:default="slot">
      {{slot.data.firstName}}
    </template>
  </cpn>
</div>
<template id="cpn">
  <div>
    <slot :data="user">
      {{user.lastname}}
    </slot>
  </div>
</template>
<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: "#app",
    components: {
      "cpn": {
        template: `#cpn`,
        data(){
          return{
            "user": {
              "firstName": "甲",
              "lastname": "壳虫"
            }
          }
        }
      }
    }
  })
</script>

上述代码做了如下几件事情
1.定义了子组件cpn,在子组件中定义了user
2.在子组件cpn的模板的插槽中绑定了属性data,且插槽的默认值为user.lastname
3.在html中使用了子组件,并使用v-slot绑定了插槽Prop对象,这样就可以通过对象名称.子组件中绑定的属性名称(slot.data),来访问子组件中的数据

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/164855.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月29日 下午3:16
下一篇 2022年7月29日 下午3:36


相关推荐

  • tcp/ip协议包含哪几层_ip协议提供的是一种什么服务

    tcp/ip协议包含哪几层_ip协议提供的是一种什么服务在OSI模型中ARP协议属于链路层;而在TCP/IP模型中,ARP协议属于网络层。1)ARP分层的位置是TCP/IP的网络层2)ARP报文是由以太网帧进行封装传输的。没有封装进IP包。3)实际上

    2022年8月5日
    10
  • 云夜卡社区系统总控源码_云夜卡社区源码

    云夜卡社区系统总控源码_云夜卡社区源码介绍:1.购买服务器安装宝塔2.添加站点php5.63.上传源码解压【解压出4个目录】4.再次添加3个站点【不添加数据库和ftp】5.每个站点对应一个源码目录6.配置文件和伪静态7.访问控制端域名/admins8.配置主站域名添加主站9.访问主站域名/admin分销:域名/fenxiao总控:域名/admins主站:域名/admin分站:域名/home用户:域名/user网盘下载地址:http://kekewangLuo.net/WL6ONV5KixK0图片:

    2022年8月12日
    12
  • 评论一下现有几个开源IM框架(Msn/QQ/Fetion/Gtalk…)[通俗易懂]

    评论一下现有几个开源IM框架(Msn/QQ/Fetion/Gtalk…)[通俗易懂]转载:http://www.cnblogs.com/zc22/archive/2010/05/30/1747300.html前言—————-这阵子,在集成通讯框架,由于不想

    2022年8月5日
    10
  • 4g网络怎么设置网速更快(移动4g网速慢怎么办)

    转载自品略图书馆http://www.pinlue.com/article/2020/05/1618/5110522403532.html别人是4G网,你也是4G网,你却更慢,不妨这样设置,网速飞快提升随着5G网络的走近,人们越来越期待未来的生活,以后电视上电影里面不可能实现的在现实中可能都会实现,5G网络的到来,人们的生活又会有怎样翻天覆地的变化,不过现在5G网络还没有正式运用,可能要到明年才能正式普及,所大家手中用的手机都是搭载4G网络,而有人发现,别人是4G网,你也是4G网,你却更慢,不妨这.

    2022年4月12日
    113
  • WiFi安全漏洞KRACK深度解读

    WiFi安全漏洞KRACK深度解读前段时间爆出的WiFi安全漏洞KRACK,波及了全球的WLAN设备,无人幸免,也就是说wifi用户连接网络,不论是在公司,家里,还是咖啡馆,都有可能遭受攻击,问题时发现了一个,还有没有发现的,也许还更严重的问题,又该怎么办呢,如何规避协议层面的安全隐患,恐怕又是普通群众力所不及的。今天偶然看到一篇文章,文章对KRACK事件的技术缘由的进行了一番梳理剖析,纯技术系风格,看完后对此次爆出的安全漏洞有了

    2022年6月10日
    62
  • bfs是什么意思_bfs实现

    bfs是什么意思_bfs实现Rubik 先生在发明了风靡全球的魔方之后,又发明了它的二维版本——魔板。这是一张有 8 个大小相同的格子的魔板:1 2 3 48 7 6 5我们知道魔板的每一个方格都有一种颜色。这 8 种颜色用前 8 个正整数来表示。可以用颜色的序列来表示一种魔板状态,规定从魔板的左上角开始,沿顺时针方向依次取出整数,构成一个颜色序列。对于上图的魔板状态,我们用序列 (1,2,3,4,5,6,7,8) 来表示,这是基本状态。这里提供三种基本操作,分别用大写字母 A,B,C 来表示(可以通过这些操作改变魔板

    2022年8月9日
    14

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号