当前位置:首页 > 程序心得 > 正文内容

vue使用插槽slot整理

admin4年前 (2021-12-01)程序心得185

插槽

  • 插槽相当于一个占位符,当没有内容传递过去的时候会显示插槽的内容,有内容时不会显示插槽的内容

作用域插槽

  • 子组件的插槽传递数据给父组件

    • 父组件 v-slot:default = <插槽数据的变量名> 这个自定义的变量名实际是通过一个参数传递到函数中,可以通过解构来简化语法: v-slot:default = "{插槽数据的对象名}" 

    • 子组件 <slot :插槽数据的变量名=<要传递的数据变量名></slot>

具名插槽

  • 一个组件中可以使用多个插槽,为了区分每一个插槽可以通过name属性设置名字

  • 在父组件中使用具名插槽时,把要插入的内容放置在template节点

    • 使用v-slot:<插槽的name值> 绑定插槽

    • v-slot语法糖:#

  • 在子组件既有具名插槽又有默认插槽时,如果父组件不使用v-slot绑定插槽,会把所有的内容都插入在默认插槽

<template>
  <div class="home">
    <img alt="Vue logo" src="../assets/logo.png">
    <HelloWorld>
      <!-- 作用域插槽:子组件的插槽传递数据给父组件 
       父组件 v-slot:default = <插槽数据的变量名>,这个自定义的变量名实际是通过一个参数传递到函数中,可以通过解构来简化语法: v-slot:default = "{插槽数据的对象名}" -->
      <template v-slot:default="{userInfo}">
        {{userInfo.name + '-' + userInfo.age}}
      </template>
      <!-- 具名插槽
      在父组件中使用具名插槽时,把要插入的内容放置在template节点
      使用v-slot:<插槽的name值> 绑定插槽
      v-slot语法糖:# -->
      <template #h3="{h3Msg}">
        {{h3Msg}}
      </template>
    </HelloWorld>
  </div>
</template>

<script>
// @ is an alias to /src
import HelloWorld from '@/components/HelloWorld.vue'

export default {
  name: 'Home',
  components: {
    HelloWorld
  },
  data() {
    return {
      msg: 'Welcome to Your Vue.js App',
    }
  },
}
</script>


 <template>
  <div class="hello">
    <h1>
      <!-- 插槽
      插槽相当于一个占位符,当没有内容传递过去的时候会显示插槽的内容,有内容时不会显示插槽的内容 -->
      <slot :userInfo="userInfo">{{ msg }}</slot>
    </h1>
    <h3>
      <!-- 具名插槽
      一个组件中可以使用多个插槽,为了区分每一个插槽可以通过`name`属性设置名字
      在子组件既有具名插槽又有默认插槽时,如果父组件不使用v-slot绑定插槽,会把所有的内容都插入在默认插槽 -->
      <slot name="h3" :h3Msg="h3Msg"></slot>
    </h3>
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  data () {
    return {
      msg: 'default msg',
      userInfo: {
        name: 'Lily',
        age: 23
      },
      h3Msg: "h3 msg"
    }
  }
}
</script>


分享到:

扫描二维码推送至手机访问。

版权声明:本文由云河空间发布,如需转载请注明出处。

本文链接:http://yuyunhe.cn/index.php/post/312.html

分享给朋友:
返回列表

上一篇:hadoop-kerberos

没有最新的文章了...

“vue使用插槽slot整理” 的相关文章

MySQL获得当前日期时间\时间戳函数

MySQL获得当前日期时间\时间戳函数 1.1 获得当前日期+时间(date + time)函数:now()mysql> select now();+———————+| now() |+———————+| 2008-08-08 22:20:46 |+———————+除了 now()...

多行文字溢出[...]的实现(text-overflow: ellipsis)

多行文字溢出[...]的实现(text-overflow: ellipsis)

对于单行文字, 很简单. Css代码  .oneLine {      width: 200px;      overflow:&...

css做屏幕适配

CSS判断不同分辨率浏览器(显示屏幕)显示不同宽度布局CSS3技术支持IE6到IE8。将用到css3 @media样式进行判断,但IE9以下版本不支持CSS3技术,这里DIVCSS5给大家介绍通过JS实现低版本的浏览器也支持CSS3实现实用布局CSS DIV网页布局中当分辨率小于等于1024px(像...

微信支付 总提示get_brand_wcpay_request:fail 也不跳转支付页面 的解决方案

微信支付 总提示get_brand_wcpay_request:fail 也不跳转支付页面 的解决方案

最近在做微信支付,帮客户部署好环境后,测试微信支付,发现点击支付后老是提示:get_brand_wcpay_request:fail,于是找到代码中调用微信支付的代码段:WeixinJSBridge.invoke('getBrandWCPayRequest', { &nb...

Jq 网页点击图片放大效果(单张)

Jq 网页点击图片放大效果(单张)

首先引入jq文件:  <script src="http://libs.baidu.com/jquery/1.7.2/jquery.min.js"></script>$(function(){     $...

使用FastClick消除IOS点击延时提高程序的运行效率

FastClick是一个非常方便的库,在移动浏览器上发生介于轻敲及点击之间的指令时,能够让你摆脱300毫秒的延迟。FastClick可以让你的应用程序更加灵敏迅捷。支持各种移动浏览器,比如Safari、Chrome、Opera等。FastClick 是一个简单,易于使用的JS库用于消除在移动浏览器上...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。