首页 > 其他分享 >Vue插槽的使用

Vue插槽的使用

时间:2023-05-06 20:58:05浏览次数:34  
标签:demo Vue 插槽 代码 默认 使用 组件

在Vue中插槽是个很好的东西,它被广泛应用于组件的封装,使组件更加灵活。提升了组件的扩展性。

在项目中,可以用<slot></slot>来定义一个插槽。我们可以在引用该组件的时候往这个插槽内放任何我们想放的元素。

插槽分为默认插槽,具名插槽,作用域插槽。

我们先看默认插槽,默认插槽就是上面我说的<slot></slot>放在组件内的某个位置,在引用的时候进行引入元素即可。代码示例

//这是vue的某个组件页面
<template>
     <div>
        <!-- 默认插槽 -->
        <div class="title">
            <slot></slot>//这里放的插槽就是默认插槽,在引用组件的时候会默认插入到这里面
        </div>
        <div class="centent"></div>
        <div class="footer"></div>
    </div>
</template>

  我们再引入组件<template>

 

<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: {},
};
 上述代码插入的内容会自动带入到默认插槽的位置

具名插槽的使用就像是我们给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>

以上代码是组件内代码

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

感谢浏览。

标签:demo,Vue,插槽,代码,默认,使用,组件
From: https://www.cnblogs.com/shengjiangMock/p/17378171.html

相关文章

  • WPS基础使用指南
    WPS是一款非常常用的办公软件,包含了WPS文字、WPS表格、WPS演示三个模块。以下是WPS基础使用知识:1.启动WPS在电脑桌面找到WPS的图标,双击打开即可。或者在开始菜单中搜索WPS,点击打开。也可以直接双击文档、表格、演示等格式的文件,WPS会自动打开对应的模块。2.WPS文字的快捷键快捷键......
  • 使用 grom 后所有操作数据库的代码都使用同一个表-链式调用
    在写业务代码的时候一位同事写代码是这样的func(p*PromptRepo)GetArtPrompt(ctxcontext.Context,options...func(option*gorm.DB))(articles[]*model.ArticlePrompt,errerror){ p.db=p.db.Table(model.ArticlePrompt{}.TableName()) for_,option:=rangeop......
  • 眼见未必为实--如何避免VMware平台ESXi主机CPU使用率的“坑”?
    原文:https://www.modb.pro/db/621136眼见未必为实--如何避免VMware平台ESXi主机CPU使用率的“坑”?前言在实际运维中经常会遇到这样的情况,VMWARE虚拟化平台ESXi主机物理CPU及内存使用率较低,但是还是有用户感觉慢。虚拟化平台通过client看到的ESXi主机CPU的使用率的参考价值有多......
  • 解决idea2020版本无法使用actiBPM插件问题
    下载由于在idea自带的插件商店中搜索不到此插件,所以我们需要去官网下载:地址:JetBrainsMarketplace原因是2020版之后不兼容此插件了点击下载:然后使用压缩软件打开此jar包,编辑META-INF/pluign.xml文件:找到我用红色框圈出来的地方记下自己idea的版本号:按照下图......
  • 使用Python扩展PAM(part 1)
    0、使用Python扩展PAM实现一些额外的功能,比如ssh、vpn等二次验证。1、准备工具实现这个功能需要用到pam_python pam-python 注意!是pam-python不是python_pamPam-python是一个开源的Python模块,用于编写自定义PAM模块。Pam-python使用Python脚本来扩展PAM功能。它使用Cython和Pyt......
  • Bing的AI聊天使用体验
    Bing开启了AI聊天功能,我们这里做一个简单的测评,看看各种AI是否达到预期效果。PS:没有“魔法”的各位就不用看下去了1.登陆打开edge,遇到的第一个问题就是,使用“魔法”后,登陆报错0x80190001(不登录每天的聊天次数有限)搜索资料后发现一个好用的解决方式,下载fiddler,打开win......
  • 【Redis】-使用Lua脚本解决多线程下的超卖问题以及为什么?
    一.多线程下引起的超卖问题呈现1.1.我先初始化库存数量为1、订单数量为01.2.开启3个线程去执行业务业务为:判断如果说库存数量大于0,则库存减1,订单数量加1结果为:库存为-2,订单数量为3原因:如下图所示,这是因为分别有6个指令(3个库存减1指令,3个订单数量加1指令)在redis服务端执行导致......
  • leveldb无法在wsl1中使用
    1、WSL1不支持FUSE文件系统,因此无法在WSL1中直接使用LevelDB。LevelDB使用FUSE来提供基于文件的存储,因此在WSL1中无法正常运行。但是,您仍然可以在WSL1上使用Leveldb的API,只需将数据存储在本地文件系统中即可。这意味着您需要使用本地Windows文件系统或其他支持......
  • vue-router
    安装vue-router是一个vue的插件,用来实现前端的路由,推荐使用pnpmaddvue-router@4进行安装。推荐配合vue3组合式api使用基础从一个例子开始<!--App.vue文件--><divid="app"><h1>HelloApp!</h1><p><!--使用router-link组件进行导航--><!--通过传......
  • 接口自动化 测试数据驱动 DDD模块使用
    一、DDT简单介绍名称:Data-DrivenTests,数据驱动测试作用:由外部数据集合来驱动测试用例的执行核心的思想:数据和测试代码分离应用场景:一组外部数据来执行相同的操作优点:当测试数据发生大量变化的情况下,测试代码可以保持不变实际项目:excel存储测试数据,ddt读取测试数据到单元......