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)
随机推荐
- Day16-异常
异常机制 一.Error和Exception 1.什么是异常 2.异常体系结构 3.Error和Exception Error Exception 二.捕获和抛出异常 1.异常处理机制 抛出异常 捕获 ...
- Hadoop高可用集群存在的一些共性问题
Hadoop高可用集群存在的一些共性问题 1.NameNode 偶然性挂掉 问题原因: 用群启脚本启动HA集群,启动过程中NameNode要依赖于JournalNode,所以在启动过程中, Nam ...
- JSON详述
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写 使用json函数需要导入json库,import json json.dumps 将p ...
- matlab函数学习笔记
数值精度 显示精度由format函数控制,不影响原始数据,只控制显示精度 命令 说明 long short rat 分数 digits vpa pi的输出 命令 显示结果结果 form ...
- python常用数据类型方法详解
str类型 count('str',begin_index,ending_index) 在s字符串中统计str出现的次数 s.endswith('str') 判断s字符串是否是已str字符串结尾,为真 ...
- Mac Idea2018.1.6版 利用脚本激活安装详解
下载安装包:链接: https://pan.baidu.com/s/1W4alLXUeQ6xazkNEtB8I9w 提取码: w6rg 下载脚本:链接: https://pan.baidu.com/s ...
- PHP操作MySQL批量Update的写法,各框架通用防注入版
使用别人的扩展遇到了问题,发现没有做SQL注入的处理.我又写了个轮子,根据自己需求扩展了下,有需要的小伙伴可以直接取用. 这里就直接粘贴源码了,会用PHPD ,基本都会如何把它运用到各个框架里的. 本 ...
- 容器数据库(CDB)和传统的非容器数据库的区别
传统的非容器数据库在系统元数据和实例资源没有进行任何共享.容器数据库把 Oracle 提供的元数据.后台进程以及内存结构进行共享,把每个部门数据库的存储结构以 PDB 的形式独立出来,从而实现了系统资 ...
- 安卓手机qpython使用感觉
我是写C#的,最佳一时兴起,下载了个qpython来玩儿,发现这东西写点简单的爬虫还行,配合sqlite,可以做一些简单的事情,于是乎想写一个有趣的东西,在qpython写一个脚本,去收蚂蚁森林的能量 ...
- 统信桌面端专业版开启cron日志,确认定时任务执行情况
默认没有开启cron日志记录 1. 修改rsyslog vi /etc/rsyslog.conf #将cron前面的注释符去掉 cron.* /var/log/cron.log 排查完毕需关闭,重新注 ...