vue---插槽

深入理解Vue.js插槽机制:默认、具名与作用域
本文详细介绍了Vue.js中的默认插槽、具名插槽和作用域插槽,以及它们在组件自定义、动态内容传递和数据绑定中的应用,帮助开发者更好地构建可扩展的组件结构。

1.默认插槽

作用:让组件内部的一些结构支持自定义

应用场景:在页面中显示一个对话框,封装成一个组件,但是组件内容部分不写死

基本语法:①组件内需要定制的结构部分,改用<slot></slot>

②使用组件时,<MyDialog></MyDialog>标签内部,传入结构替换slot

插槽后备内容:封装组件时,可以为预留的<slot>插槽提供后备内容(默认内容)

语法:在<slot>标签内,放置内容,作为默认显示内容

<slot>我是后备内容</slot>

2.具名插槽

需求:一个组件内有多处结构,需要外部传入标签,进行定制

语法:①多个slot使用name属性区分名字

②template配合v-slot:名字 来分发对应标签  v-slot:名字可以简写成 #名字

v-slot需要写在template标签中

3.作用域插槽

作用域插槽是插槽的一个传参语法

定义slot插槽的同时,是可以传值的。给插槽上可以绑定数据,将来使用组件时可以用。

应用场景:封装表格组件

①父传子,动态渲染表格内容

②利用默认插槽,定制操作列

③删除或查看都需要用到当前项的id,属于组件内部的数据通过作用域插槽传值绑定,进而使用

基本步骤:

①给slot标签,以添加属性的方式传值

<slot :id="item.id" msg="测试文本"></slot>

②所有添加的属性,都会被收集到一个对象中

{id:3, msg:'测试文本'}

③在template中,通过#插槽名=“obj”接收,默认插槽名为default

参考资料中未提及vue-ganttastic组件中插槽的使用方法及相关特性信息。不过,从一般的Vue插槽知识可知,Vue实现了一套内容分发的API,插槽通过`<slot>`元素作为承载分发内容的出口。插槽组件通常以双标签形式结束,组件内的内容就是插槽,如果不做处理,对应的组件内容默认不显示。例如在一个简单的Vue示例中,在`App.vue`文件里导入并注入`MyComponent`组件,在模板中使用该组件,在`MyComponent.vue`中,通过`<slot>`元素插入父Vue文件中该组件内的内容[^4]。 虽然不清楚vue-ganttastic的具体情况,但推测其插槽使用可能与通用的Vue插槽使用类似,可以通过插槽来扩展组件的行为和外观。像Vue - Gantt - Chart 可以通过插槽和自定义方法扩展图表的行为和外观,vue-ganttastic或许也有类似利用插槽的功能来满足不同展示和交互需求的特性 [^2]。 ```vue <!-- App.vue --> <script> // 1.导入对应的vue文件 import MyComponent from './components/MyComponent.vue'; export default { name: "App", components: { // 2.注入对应组件 MyComponent } } </script> <template> <div id="app"> <!-- 3.插槽组件 不是单标签 --> <MyComponent> <!-- 这里可以放置要分发到插槽的内容 --> <p>这是要分发到插槽的内容</p> </MyComponent> </div> </template> <style> </style> <!-- MyComponent.vue --> <template> <div> <h3>插槽</h3> <div> <!-- 4.插入父vue文件的MyComponent内的内容 --> <slot>插槽内容</slot> </div> </div> </template> <script> export default { } </script> <style> </style> ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值