vue3 封装el-table时,构造$children(类式写法)
由于业务需求(组件封装),需要在获取el-table下面的el-table-column实例
在 vue2.x 当中直接使用this.$children就可以获取到该实例
但是 vue3.x 弃用了$children,官方建议使用$ref获取子组件实例,由于el-table-column是通过插槽形式插入,且当el-table-column数过多时,不可能专门为每一个el-table-column都添加ref,在网上搜索之后发现有人建议使用$slot获取插入的组件实例,但是获取到的实例信息不足,因此决定构造一个“$children”出来
1. 使用$slots
打印$slots
console.log(this.$slots);
// 若是setup需要在setup当中接收slots参数

调用$slots里面的default
(this.$slots as any).default()
// 若是setup需要在setup当中接收slots参数

2. 构造$children
思路:思路很简单,直接在el-table-column挂载时,调用父组件的方法,并传入自身实例即可
- 为方便在
el-table-column挂载时做处理,封装一下el-table-column
<el-table-column
v-bind="$props"
ref="elColumn"
:sortable="sortable"
:merge="merge"
:merge-by="mergeBy"
:formatter="compatibleFormatter"
v-on="$attrs"
>
<template v-if="$slots.default" #default="scope">
<slot v-bind="scope" />
</template>
<template v-if="$slots.header" #header="scope">
<slot name="header" v-bind="scope" />
</template>
</el-table-column>
在挂载的时候调用父方法
mounted() {
// 获取表格列的配置
this.columnConfig = (this.$refs as any).elColumn?.$?.columnConfig?.value
// this.$parent获取到的是el-table组件的实例,this.$parent.$parent才是我们自己写的组件的实例
if (this.$parent && this.$parent.$parent) {
const _this = this;
(this.$parent.$parent as any).setChildrenInstance(_this)
}
}
- 在父组件接收实例并存放起来
新建父组件(简写)
<el-table>
<slot />
</el-table>
接收子组件实例
public childrens: any[] = []
public setChildrenInstance(children: any) {
this.childrens.push(children)
}
// 在用的地方调用childrens即可 打印 console.log(this.childrens);

vue3 封装el-table时,构造$children(类式写法)的更多相关文章
- 一、JDBC的概述 二、通过JDBC实现对数据的CRUD操作 三、封装JDBC访问数据的工具类 四、通过JDBC实现登陆和注册 五、防止SQL注入
一.JDBC的概述###<1>概念 JDBC:java database connection ,java数据库连接技术 是java内部提供的一套操作数据库的接口(面向接口编程),实现对数 ...
- 自己封装的poi操作Excel工具类
自己封装的poi操作Excel工具类 在上一篇文章<使用poi读写Excel>中分享了一下poi操作Excel的简单示例,这次要分享一下我封装的一个Excel操作的工具类. 该工具类主要完 ...
- 封装获取网络信息Linux—API类
封装获取网络信息Linux—API类 封装好的库: #ifndef NETINFORMATION_H #define NETINFORMATION_H #include <netdb.h> ...
- Android PermissionUtils:运行时权限工具类及申请权限的正确姿势
Android PermissionUtils:运行时权限工具类及申请权限的正确姿势 ifadai 关注 2017.06.16 16:22* 字数 318 阅读 3637评论 1喜欢 6 Permis ...
- Spring-test使用JUnit时,测试类autowired报错,create bean error
Spring-test使用JUnit时,测试类里面使用autowired会报错, 报create bean error...... 但是controller里面@autowired可以正常运行的. 在 ...
- foreach DataTable或Table时要略过第一行。
昨天有续写一个练习<输入数字动态创建行(二)>http://www.cnblogs.com/insus/p/4916260.html ,最终是需要把数据存入数据库中. 在循环ASP:Tab ...
- 为什么要用Hibernate框架? 把SessionFactory,Session,Transcational封装成包含crud的工具类并且处理了事务,那不是用不着spring了?
既然用Hibernate框架访问管理持久层,那为何又提到用Spring来管理以及整合Hibernate呢?把SessionFactory,Session,Transcational封装成包含crud的 ...
- 保存项目文件“XXX.csprj”时出错。类没有注册。
[出错提示]保存项目文件“XXX”时出错.类没有注册.正在查找具有CLSID的对象:{D9B3211D-E57F-4426-AAEF-30A806ADD397}. [解决办法] 需要安装:MSXML_ ...
- js原生设计模式——2面向对象编程之继承—原型继承(类式继承的封装)
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- hbase删除table时,显示table不存在
hbase删除table时,显示table不存在,但是创建table时,显示table存在. 解决方案: 清空zookeeper数据.(重新安装zookeeper)
随机推荐
- 使用LitJson输出格式化json文件到本地
百度上搜了半天,竟然没有C#使用LitJson格式化输出的例子,全都是Newtonsoft.Json的,最后在litjson的官网找到了方法. 给大家分享一下: https://litjson.net ...
- ssh 修改端口号 --centos 7
1 vim /etc/ssh/sshd_config Port XXXXX #XXXXX 为要修改的端口号,默认是22,直接在新的行添加Port XXXXX即可. 2 systemctl re ...
- 【jmeter】请求域名解析失败,添加本地代理
jmeter HTTP请求URL中使用域名 http://xxx.xxx.xxx,异常:java.net.UnkownHostException 原因:请求域名没有被解析成功,该http请求没有通过本 ...
- turtle 画照片
# -*- coding: utf-8 -*- import turtle as t import cv2 def draw_img(img_path, scale=1): ""& ...
- JDBC与JPA--初学JPA
最近工程中用到JPA,头一次接触,踩了不少坑.刚好复习到JDBC,发现JPA用起来真是很简单.就对比一下这两者的区别 总结:JDBC是更接近数据库SQL的抽象,使用时依然使用的是SQL.优点是靠近 ...
- jmeter中使用csv文件时设置编码
1.新建XLS文件,另存为CSV格式文件 2.在jmeter中可以尝试将编码设置成GB2312,或者utf-8
- 修改allure图标和标题
allure的logo更换步骤 1.找到allure安装目录,进入目录如:D:\Program Files\allure-2.17.3\plugins\custom-logo-plugin\stati ...
- 项目:表格打印(字符图网格进阶、rjust、列表中最长的字符串长度)
项目要求:编写一个名为 printTable()的函数,它接受字符串的列表的列表,将它显示在组织良好的表格中,每列右对齐. tableData = [['apples', 'oranges', 'ch ...
- Bootstrap4布局(简要)
目录 什么是Bootstrap 布局基础 布局容器 相应断点 z-index 网格系统 12栅格 重排序 列偏移 弹性盒子 什么是Bootstrap Bootstrap是目前最流行的一套前端开发框架, ...
- Hyperkernel验证实验的复现与z3环境初识
Hyperkernel验证实验的复现与z3环境初识 前言 建议顺序阅读本文!禁止转载.--@CarpVexing(https://www.cnblogs.com/CarpVexing/p/159483 ...