登录  /  注册
首页 > web前端 > js教程 > 正文

vue组件的slot插口使用详解

php中世界最好的语言
发布: 2018-04-20 13:37:32
原创
1249人浏览过

这次给大家带来vue组件的slot插口使用详解,vue组件slot插口使用的注意事项有哪些,下面就是实战案例,一起来看一下。

子组件

<template>
  <p>
    </p>
<ul>
      <!--<slot></slot>-->
      <li>{{item.text}}</li>
    </ul>
  
</template><script>
  export default{
    data(){
      return{
        items:[
          {id:1,text:&#39;第1段&#39;},
          {id:2,text:&#39;第2段&#39;},
          {id:3,text:&#39;第3段&#39;},
        ]
      }
    }
  }
</script><style>
</style>
登录后复制

  父组件

<template>
  <p>
    </p>
<h2>首页</h2>
    <router-link>跳转到详情</router-link>
    <p>父组件</p>
    <slotshow>
      <p>{{msg}}</p>
    </slotshow>
  
</template><script>
  import slotshow from &#39;../components/slotshow&#39;
  export default{
    data(){
      return{
        msg:"测试内容"
      }
    },
    components:{
      slotshow
    }
  }
</script><style>
</style>
登录后复制

  这种情况是如果要父组件在子组件中插入内容 ,必须要在子组件中声明slot 标签  ,如果子组件模板不包含插口,父组件的内容<p>{{msg}}</p>将会被丢弃。

 当slot存在默认值

默认值

,且父元素在<slotshow></slotshow>中没有要插入的内容时,会显示

默认值

(p标签会去掉),当slot存在默认值,且父元素在中存在要插入的内容时,则显示父组件中设置的值,

具名slot

元素可以用一个特殊的属性 name 来配置如何分发内容。多个 slot 可以有不同的名字。具名 slot 将匹配内容片段中有对应 slot 特性的元素

var childNode = {
 template: `
 <p>
 </p><p>子组件</p>
 <slot>头部默认值</slot>
 <slot>主体默认值</slot>
 <slot>尾部默认值</slot>
 
 `,
};
var parentNode = {
 template: `
 <p>
 </p><p>父组件</p>
 <child>
 <p>我是头部</p>
 <p>我是尾部</p>
 </child>
 
 `,
 components: {
 'child': childNode
 },
};
登录后复制

仍然可以有一个匿名 slot,它是默认 slot,作为找不到匹配的内容片段的备用插槽。匿名slot只能作为没有slot属性的元素的插槽,有slot属性的元素如果没有配置slot,则会被抛弃

var childNode = {
 template: `
 <p>
 </p><p>子组件</p>
 <slot>主体默认值</slot>
 <slot></slot>
 
 `,
};
var parentNode = {
 template: `
 <p>
 </p><p>父组件</p>
 <child>
 <p>我是主体</p>
 <p>我是其他内容</p>
 <p>我是尾部</p>
 </child>
 
 `,
 components: {
 'child': childNode
 },
};
<p>插入<slot>中,<p>我是其他内容</p>插入<slot>中,而<p>被丢弃</p></slot></slot></p>
登录后复制

如果没有默认的 slot,这些找不到匹配的内容片段也将被抛弃

var childNode = {
 template: `
 <p>
 </p><p>子组件</p>
 <slot>主体默认值</slot>
 
 `,
};
var parentNode = {
 template: `
 <p>
 </p><p>父组件</p>
 <child>
 <p>我是主体</p>
 <p>我是其他内容</p>
 <p>我是尾部</p>
 </child>
 
 `,
 components: {
 'child': childNode
 },
};
<p>我是其他内容</p>和<p>都被抛弃</p>
登录后复制

作用域插槽

作用域插槽是一种特殊类型的插槽,用作使用一个 (能够传递数据到) 可重用模板替换已渲染元素。

在子组件中,只需将数据传递到插槽,就像将 props 传递给组件一样

<span><p>
 <slot></slot></p></span>
登录后复制

在父级中,具有特殊属性 scope 的

var <span>childNode</span> = {
 template: `
 <p>
 </p><p>子组件</p>
 <slot></slot>
 
 `,
};
var parentNode = {
 template: `
 <p>
 </p><p>父组件</p>
 <child>
 <template>
 <p>hello from parent</p>
 <p>{{ props.xxx }}</p>
 </template>
 </child>
 
 `,
 components: {
 'child': childNode
 },
};
登录后复制

如果渲染以上结果,得到的输出是

列表组件】

作用域插槽更具代表性的用例是列表组件,允许组件自定义应该如何渲染列表每一项

var childNode = {
 template: `
 
登录后复制
     默认值  
 `,  data(){  return{  items:[  {id:1,text:'第1段'},  {id:2,text:'第2段'},  {id:3,text:'第3段'},  ]  }  } }; var parentNode = {  template: `  

 

父组件

         `,  components: {  'child': childNode  }, };

 

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

vue-router懒加载详解(附代码)

Vue项目中怎么引用验证码

以上就是vue组件的slot插口使用详解的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号