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中插槽的使用就到这里。

感谢浏览。

posted @   世界的尽头就是打工人  阅读(78)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示