vue3插槽solt 使用

news/2024/7/7 22:15:15

 背景增加组件的复用性,个人体验组件化还是react 方便。

Vue插槽solt如何传递具名插槽的数据给子组件?

一、solt 原理

知其然知其所以然

Vue的插槽(slots)是一种分发内容的机制,允许你在组件模板中定义可插入的内容,然后在使用组件的地方提供这些内容。

插槽的工作原理是这样的:

  1. 当Vue编译一个组件模板时,它会查找所有的<slot>元素。每个<slot>元素都代表一个插槽。

  2. 对于每个插槽,Vue会查看它是否有名字(通过name属性指定)。如果有,那么它就是一个具名插槽;如果没有,那么它就是一个默认插槽。

  3. 当Vue渲染一个组件时,它会查看组件的父上下文中是否提供了插槽内容。如果提供了,那么Vue会用这些内容替换掉插槽;如果没有提供,那么Vue会使用插槽的默认内容(如果有的话)。

  4. 插槽内容是在父上下文中编译的,但是它们可以访问子上下文中的数据。这是通过作用域插槽实现的,你可以在插槽内容中使用特殊的<template>元素,并通过v-slot指令提供一个可以访问子上下文中数据的模板。

这就是Vue插槽的基本工作原理。插槽是Vue组件系统的一个重要部分,它们提供了一种灵活的方式来组合和重用组件。

二、单个插入结构

子组件

上文略....

<el-table :data="tableData" style="width: 100%">
  <slot></slot>
</el-table>

下文略....

父组件中,你可以这样使用ExportRecordsModal组件,并填充插槽:

<ExportRecordsModal
  v-model:diaShow="diaShow"
  :onDialogClose="onDialogClose"
  :onDownLoad="downLoad"
  :tableData="tableDataList"
  :diaPagination="diaPagination"
  :sizeChangeDia="sizeChangeDia"
  :currentChangeDia="currentChangeDia"
>
   // 插槽DOM
  <el-table-column label="导出时间">
    <template #default="scope">
      <span>{{ scope.row.createTime }}</span>
    </template>
  </el-table-column>
</ExportRecordsModal>

三、多个插槽

子组件

上文略....

<el-table :data="props.tableData" style="width: 100%">
  <slot name="column1"></slot>
  <slot name="column2"></slot>
</el-table>

下文略....

父组件

<ExportRecordsModal
  v-model:diaShow="diaShow"
  :onDialogClose="onDialogClose"
  :onDownLoad="downLoad"
  :tableData="tableDataList"
  :diaPagination="diaPagination"
  :sizeChangeDia="sizeChangeDia"
  :currentChangeDia="currentChangeDia"
>
  <template #column1>
    <el-table-column label="序号">
      <template #default="scope">
        <span>{{ scope.row.createTime }}</span>
      </template>
    </el-table-column>
  </template>
  <template #column2>
    <!-- 你的第二个列定义 -->
  </template>
</ExportRecordsModal>

实现前

 实现后


http://lihuaxi.xjx100.cn/news/2162977.html

相关文章

三菱【PLC】

【X】输入 X000~X043 // 1bit 【Y】输出 Y000~Y027 // 1bit 【M】辅助继电器 M000~M383 一般用 // 1bit M384~M511 EEPROM保持 M512~M1535 电容保持 // 电容满电10天 M8000~M8255 特殊用 …

[Algorithm][动态规划][路径问题][不同路径][不同路径Ⅱ][珠宝的最高价值]详细讲解

目录 1.不同路径1.题目链接2.算法原理详解3.代码实现 2.不同路径 II1.题目链接2.算法原理详解3.代码实现 3.珠宝的最高价值1.题目链接2.算法原理详解3.代码实现 1.不同路径 1.题目链接 不同路径 2.算法原理详解 思路&#xff1a; 确定状态表示 -> dp[i][j]的含义 走到dp[…

中霖教育怎么样?二建继续教育几年一次?

中霖为大家介绍&#xff1a; 根据相关规定&#xff0c;二级建造师执业资格注册证书设定有效期限为三年。为确保持证人员的专业能力&#xff0c;在规定的期限内需要完成规定的继续教育课程并参加考核&#xff0c;以此来维护其职业资质的连续性。 在执业资格证书的有效期满前&a…

Defog发布Llama-3-SQLCoder-8B,文本转SQL模型,性能比肩GPT-4,准确率超90%,消费级硬件可运行

前言 在计算语言学领域&#xff0c;将自然语言转化为可执行的SQL查询是一个重要的研究方向。这对于让那些没有编程或SQL语法知识的用户也能轻松访问数据库信息至关重要。Defog团队近日发布了基于Llama-3的SQLCoder-8B模型&#xff0c;它在文本转SQL模型领域取得了显著突破&…

vue中引入js脚本块或者js文件 js函数 js方法

一、vue中&#xff0c;使用js函数的方法 在vue文件中&#xff0c;如果想要在组件里&#xff0c;通过事件触发&#xff0c;调用到函数&#xff0c;这个函数需要放在特定的位置&#xff0c;如下&#xff1a; <script> export default {methods: {t1(){},t2(){},t3(){}} }…

[桌面端应用开发] 从零搭建基于Caliburn的图书馆管理系统(C#合集)

图书馆系统要求&#xff1a; 你是一家新市图书馆的经理。 图书馆拥有大量藏书和不断增长的会员。 为了使图书馆管理更加容易&#xff0c;现在创建一个图书馆管理系统。 图书馆管理系统应具备以下功能&#xff1a; 1.图书管理&#xff1a;系统应该能够向图书馆添加新图书。 每本…

android 水平居中对齐

在Android中&#xff0c;实现水平居中&#xff08;水平对齐&#xff09;通常涉及布局和控件的属性设置。这里有一些常见的方法来实现水平居中&#xff1a; 使用FrameLayout或LinearLayout: 使用FrameLayout时&#xff0c;你可以通过设置子视图的android:layout_gravity属性为ce…

基于图鸟UI的资讯名片模版开发与应用

一、引言 在前端技术日新月异的今天&#xff0c;快速、高效、美观的UI组件库和模板成为了开发者们关注的焦点。图鸟UI作为一款集成了基础布局元素、配色体系、图标icon和精选组件的UI框架&#xff0c;为前端开发者提供了极大的便利。本文将以图鸟UI为基础&#xff0c;探讨基于…