Vue 插槽
如果向组件标签中输入内容,会被忽略掉
1、props接受父组件传递过来的数据
2、插槽,接受父组件向子组件传递的html文本
在组件中通过slot标签可以接收父组件传递过来的html文本,就是将slot标签添加到template标签中
如下:现在组件中添加标签
<sub-component :pmsg='msg'> <h3>sub-component之间的内容</h3> </sub-component>
再在template设置slot标签,以显示组件中添加的标签
<template id="subComponent"> <div> <h2>subComponent组件</h2> <p>subComponent组件数据{{username}}</p> <p>父组件传递过来的数据:{{pmsg}}</p> <slot></slot> </div> </template>
vue插槽后备内容
后备内容
有时为一个插槽设置具体的后备(也就是默认的)内容是很有用的,
他只会在没有提供内容的时候被渲染
具名插槽:
如果定义了多个插槽,想把指定内容放到指定插槽中,
默认情况下:
当使用组件时,组件定义的所有html文本都会放到插槽里面
因此,需要给插槽取一个名字。同时,在向具名插槽提供内容的时候,我们可以在一个template元素上是用
v-slot指令,并已v-slot的参数的形式提供其名称。
<div id="app"> <base-layout id="layout"> <!-- 当使用组件时,组件定义的所有html文本都会放到插槽里面 在向具名插槽提供内容的时候,我们可以在一个template元素上是用 v-slot指令,并已v-slot的参数的形式提供其名称 --> <template v-slot:header> <h3 >我是要插入的头部内容</h3> </template> <template v-slot:main> <h3>我是要插入的主体内容</h3> </template> <template v-slot:footer> <h3>我是要插入的底部内容</h3> </template> </base-layout> </div> <!-- 定义一个组件,在组件内部定义多个插槽 --> <template id="baseLayout"> <div> <header> <p>头部</p> <!-- slot内容的默认值是defalut --> <slot name="header"></slot> </header> <main> <p>主题</p> <slot></slot> </main> <footer> <p>底部</p> <slot name="footer"></slot> </footer> </div> </template> <script src="../js/vue.js"></script> <script> Vue.component('baseLayout', { template:'#baseLayout', data () { return { username:'tom' } }, props: ['pmsg'] }) let vm = new Vue({ el : "#app", data : { msg:'hello vue' }, components: { 'btn-tpl' : { template:'#btn-tpl' } } }) </script>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了