热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

vue插槽vslot

文章目录插槽的作用基本使用默认内容具名插槽多个插槽使用具名插槽的缩写作用域插槽插槽默认内容数据展示插槽模版传参多个参数被提供的内容只有默认插槽时,组件的标签才可以被当

文章目录

      • 插槽的作用
      • 基本使用
      • 默认内容
      • 具名插槽 多个插槽使用
        • 具名插槽的缩写
      • 作用域插槽
        • 插槽默认内容 数据展示
        • 插槽模版传参
        • 多个参数
        • 被提供的内容只有默认插槽时,组件的标签才可以被当作插槽的模板来使用
        • 解构插槽 Prop
      • 动态插槽名


插槽的作用

组件的插槽也是为了让我们封装的组件更加具有扩展性

基本使用

展现组件标签内部的内容(包括标签)
插槽内容要在组件标签内部

<!DOCTYPE html>
<html lang&#61;"en">
<head><meta charset&#61;"UTF-8"><meta name&#61;"viewport" content&#61;"width&#61;device-width, initial-scale&#61;1.0"><meta http-equiv&#61;"X-UA-Compatible" content&#61;"ie&#61;edge"><title>v-slot</title><script src&#61;"https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body><div id&#61;"app"><box-cs><h1>Something bad happened.</h1><!-- slot内容来源 --></box-cs><!-- slot展现组件内部的内容包括html节点 --></div><script>Vue.component(&#39;box-cs&#39;,{template:&#96;

&#96;})new Vue({el:"#app"})</script>
</body>
</html>

在这里插入图片描述

默认内容

只会在组件内部没有提供内容的时候被渲染

<box-cs></box-cs>Vue.component(&#39;box-cs&#39;,{template:&#96;

box-cs默认内容
&#96;
})

具名插槽 多个插槽使用

一个不带 name 的 出口会带有隐含的名字“default”。
任何没有被包裹在带有 v-slot 的 中的内容都会被视为默认插槽的内容。

在组件里面
v-slot 只能用于 template 标签

<template v-slot:header>template><template slot:header>template><div slot:header>div>


<html lang&#61;"en">
<head><meta charset&#61;"UTF-8"><meta name&#61;"viewport" content&#61;"width&#61;device-width, initial-scale&#61;1.0"><meta http-equiv&#61;"X-UA-Compatible" content&#61;"ie&#61;edge"><title>v-slottitle><script src&#61;"https://cdn.jsdelivr.net/npm/vue/dist/vue.js">script>
head>
<body><div id&#61;"app"><base-layout><template v-slot:header><h1>header 插槽内容h1>template><template v-slot:default><h1>默认插槽内容h1>template><template v-slot:footer><h1>footer 插槽内容h1>template>base-layout>div><script>Vue.component(&#39;base-layout&#39;,{template:&#96;

&#96;})new Vue({el:"#app",})script>
body>
html>

具名插槽的缩写

只能用于 template 标签

<div id&#61;"app"><base-layout><template #header><h1>header 插槽内容h1>template><template #footer&#61;"data"> <h1>footer 插槽内容h1>{{data}}template>base-layout>
div>Vue.component(&#39;base-layout&#39;,{data(){return{footer:{title:&#39;footer&#39;,msg:&#39;footer is msg&#39;}}},template:&#96;<div><header><slot name&#61;"header">slot>header><main><slot>slot>main><footer><slot name&#61;"footer" :footer&#61;"footer">slot>footer>div>&#96;
})
new Vue({el:"#app",
})

作用域插槽


插槽默认内容 数据展示

<div id&#61;"app"><base-layout></base-layout>
</div>
Vue.component(&#39;base-layout&#39;,{data(){return{user:&#39;userdata&#39;,age:18}},template:&#96;

{{user}}{{age}}
&#96;
})
new Vue({el:"#app",
})

插槽模版传参

父组件替换插槽的标签&#xff0c;但是内容由子自己提供

<div id&#61;"app"><base-layout><template v-slot:default&#61;"user"><h1>默认插槽内容</h1><!-- user:{ "user": "userdata"} -->{{ user.user }}</template></base-layout>
</div>
Vue.component(&#39;base-layout&#39;,{data(){return{user:&#39;userdata&#39;,age:18}},template:&#96;

&#96;
})
new Vue({el:"#app",
})

多个参数

<div id&#61;"app"><cpn>cpn><cpn><div slot-scope&#61;"slot">{{slot.list.join(&#39; -- &#39;)}}div>cpn><cpn><template v-slot:default&#61;"data">{{data}}template> cpn><cpn><template v-slot&#61;"data">{{data}}template> cpn>
div><template id&#61;"tmp"><div><slot :list&#61;"plist,name"><ul><li v-for&#61;"(item,i) in plist">{{item}}li>ul>slot>div>
template><script>const cpn &#61; {template:&#39;#tmp&#39;,data(){return {plist:[&#39;aaa&#39;,&#39;xxx&#39;,&#39;Javascript&#39;,&#39;java&#39;],name:"组件"}}}const app &#61; new Vue({data:{},components:{cpn},methods:{}}).$mount("#app")
script>

在这里插入图片描述

被提供的内容只有默认插槽时&#xff0c;组件的标签才可以被当作插槽的模板来使用

只要出现多个插槽&#xff0c;请始终为所有的插槽使用完整的基于 的语法 即具名插槽写法

<div id&#61;"app"><base-layout v-slot:default&#61;"data">{{ data}}</base-layout><!----><!--<base-layout v-slot&#61;"data">{{ data}}</base-layout>-->
</div>Vue.component(&#39;base-layout&#39;,{data(){return{user:&#39;userdata&#39;,age:18}},template:&#96;

&#96;
})
new Vue({el:"#app",
})

在这里插入图片描述

解构插槽 Prop

<div id&#61;"app"><base-layout><template v-slot:default&#61;"{user,age,sex&#61;{name:&#39;ff&#39;}}"><h1>默认插槽内容</h1>{{ user }} {{user}}</template></base-layout>
</div>
Vue.component(&#39;base-layout&#39;,{data(){return{user:&#39;userdata&#39;,age:18}},template:&#96;

&#96;
})
new Vue({el:"#app",
})

动态插槽名

<div id&#61;"app"><base-layout ff&#61;"header"><template #[header]><h1>header 插槽内容</h1></template></base-layout>
</div>Vue.component(&#39;base-layout&#39;,{props:[&#39;ff&#39;],data(){return{user:&#39;userdata&#39;,age:18}},template:&#96;

&#96;
})
new Vue({el:"#app",data:{header:&#39;header&#39;}
})

推荐阅读
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了响应式页面的概念和实现方式,包括针对不同终端制作特定页面和制作一个页面适应不同终端的显示。分析了两种实现方式的优缺点,提出了选择方案的建议。同时,对于响应式页面的需求和背景进行了讨论,解释了为什么需要响应式页面。 ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • Firefox火狐浏览器关闭到http://detectportal.firefox.com的流量问题解决办法
    本文介绍了使用Firefox火狐浏览器时出现关闭到http://detectportal.firefox.com的流量问题,并提供了解决办法。问题的本质是因为火狐默认开启了Captive portal技术,当连接需要认证的WiFi时,火狐会跳出认证界面。通过修改about:config中的network.captive-portal-service.en的值为false,可以解决该问题。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • 本文介绍了django中视图函数的使用方法,包括如何接收Web请求并返回Web响应,以及如何处理GET请求和POST请求。同时还介绍了urls.py和views.py文件的配置方式。 ... [详细]
  • 欢乐的票圈重构之旅——RecyclerView的头尾布局增加
    项目重构的Git地址:https:github.comrazerdpFriendCircletreemain-dev项目同步更新的文集:http:www.jianshu.comno ... [详细]
  • 如何利用 Myflash 解析 binlog ?
    本文主要介绍了对Myflash的测试,从准备测试环境到利用Myflash解析binl ... [详细]
  • .NetCoreWebApi生成Swagger接口文档的使用方法
    本文介绍了使用.NetCoreWebApi生成Swagger接口文档的方法,并详细说明了Swagger的定义和功能。通过使用Swagger,可以实现接口和服务的可视化,方便测试人员进行接口测试。同时,还提供了Github链接和具体的步骤,包括创建WebApi工程、引入swagger的包、配置XML文档文件和跨域处理。通过本文,读者可以了解到如何使用Swagger生成接口文档,并加深对Swagger的理解。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
author-avatar
mobiledu2502897297
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有