Vue插槽的使用
在Vue中插槽是个很好的东西,它被广泛应用于组件的封装,使组件更加灵活。提升了组件的扩展性。
在项目中,可以用<slot></slot>来定义一个插槽。我们可以在引用该组件的时候往这个插槽内放任何我们想放的元素。
插槽分为默认插槽,具名插槽,作用域插槽。
我们先看默认插槽,默认插槽就是上面我说的<slot></slot>放在组件内的某个位置,在引用的时候进行引入元素即可。代码示例
1 2 3 4 5 6 7 8 9 10 11 | //这是vue的某个组件页面 <template> <div> <!-- 默认插槽 --> <div class = "title" > <slot></slot> //这里放的插槽就是默认插槽,在引用组件的时候会默认插入到这里面 </div> <div class = "centent" ></div> <div class = "footer" ></div> </div> </template> |
我们再引入组件<template>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <template> <div> <demoVue> <template> <!-- 这里的内容会放入到默认插槽的位置 --> <p>这是放入到默认插槽的内容</p> </template> </demoVue> <!-- 使用组件 --> </div> </template> <script> import demoVue from './demo.vue' ; //引入 ① export default { components: { demoVue }, //注册组件 ② name: 'WorkspaceJsonDemoBox' , data() { return { }; }, mounted() {}, methods: {}, }; |
1 | <em id= "__mceDel" >上述代码插入的内容会自动带入到默认插槽的位置<br></em> |
具名插槽的使用就像是我们给slot一个name 给他一个标签,我们使用template的时候使用name来指定我们要将内容放到哪里去。以下是代码描述
<div class="centent"> <div class="left"> <!-- 我们定义一个左侧插槽 name为left--> <slot name="left"></slot> </div> <div class="right"> <!-- 我们定义一个右侧插槽 name为right--> <slot name="right"></slot> </div> </div>
以上代码是组件内代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <template> <div> <demo><!-- ③使用组件 --> <template #left> <!-- 在这里指定插入的位置及内容 --> <p>插入到左侧的内容</p> </template> <template #right> <p>插入到右侧的内容</p> </template> </demo> </div> </template> <script> import demo from "./demo.vue" ; //① 引入组件 export default { components: { demo }, // ②注册组件 } |
以上代码为页面内代码
效果如下
作用域插槽的使用个人用得比较多的地方就是在表格里面携带参数。在el-table里面进行操作的时候,可以使用slot-scope来拿到当前行的参数
<el-table ref="multipleTable" :data="this.tableData" height="600" tooltip-effect="dark" style="width: 100%"
@selection-change="handleSelectionChange" row-dblclick="showUP">
<el-table-column fixed type="selection" width="55"> </el-table-column>
<el-table-column sortable fixed label="名称" width="120">
</el-table-column>
<el-table-column fixed="right" label="操作" width="120">
<template slot-scope="scope">
<span class="editInfo" @click="editInfoEvent(scope.row)">编辑</span> #################
</template>
</el-table-column>
</el-table>
像是在标注行的scope.row拿到的就是该行的数据,官方的定义是这样:在封装组件的过程中,可以为预留的 <slot> 插槽绑定props 数据,这种带有props 数据的 <slot> 叫做“作用域插槽”。
但是在开发过程中一定要灵活运用,毕竟代码是死的,人是活的。
OK那么,Vue中插槽的使用就到这里。
感谢浏览。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!