首页 > 其他分享 >为什么 Vue3 封装 Table 组件丢失 expose 方法呢?

为什么 Vue3 封装 Table 组件丢失 expose 方法呢?

时间:2024-11-15 17:47:29浏览次数:3  
标签:... ElTable expose tableRef Vue3 组件 Table 方法

在实际开发中,我们通常会将某些常见组件进行二次封装,以便更好地实现特定的业务需求。然而,在封装 Table 组件时,遇到一个问题:Table 内部暴露的方法,在封装之后的组件获取不到。

代码展示为:

const MyTable = defineComponent({
  name: 'MyTable',
  props: ElTable.props,
  emits: Object.keys(ElTable.emits || {}),
  setup(props, { slots, attrs, expose }) {
    const tableRef = ref<InstanceType<typeof ElTable>>();
    return () => (
      <div class='table-container'>
        <ElTable
          ref={tableRef}
          {...props}
          {...attrs}
          v-slots={slots}
        >
          {slots.default && slots.default()}
        </ElTable>
      </div>
    );
  },
});

在 Element Plus 的 ElTable 组件中,有很多暴露的方法,如下:

官方文档:Table 表格 | Element Plus

但使用上面封装的 MyTable 打印组件实例时,只有 table 本身的方法:

下面简单分析一下原因。 

1. expose 未正确定义或调用

原因分析:

在 Vue 3 中,expose 用于暴露子组件的方法和属性,使父组件能够访问和操作它们。如果封装了 ElTable 组件,但是没有正确定义 expose 或者没有通过 ref 正确引用子组件实例,那么 expose 的方法无法生效。

如果在 setup 中使用 expose API 或者 expose 的位置不对,那么暴露的方法就无法通过 ref 访问到。

标签:...,ElTable,expose,tableRef,Vue3,组件,Table,方法
From: https://blog.csdn.net/weixin_52648900/article/details/143780454

相关文章

  • 记录--微前端qiankun接入vue2&vue3项目
    ......
  • SpringBoot+Vue3实现数据可视化大屏
    前端工程的地址:UserManagerFront:数据可视化前端(gitee.com)效果展示,可以展现出来了,样式可能还有一些丑。后端代码后端主要是拿到数据并对数据进行处理,按照前端需要的格式进行返回即可。importcom.njitzx.entity.Student;importcom.njitzx.entity.vo.*;import......
  • Stable Diffusion Web UI - Checkpoint、Lora、Hypernetworks
    Checkpoint、Lora、Hypernetworks是StableDiffusionWebUI生图的重要工具,它们有各自的特点,结合不同的生图场景选择一个或者多个叠加使用,能够更好的命令StableDiffusion生成理想状态的图片。以人像生图用通俗的方式解释checkpoint:必不可少的模型,全局生成模型,图像的生成......
  • 【stable diffusion部署】本地部署Stable Diffusion Webui
    前言在国内使用SD的途径大致有这些:某定制整合包、大厂服务器网络部署、原版安装。使用某定制版整合包在国内应该是属于大部分。这个整合包对SD在国内的推广普及起到了很重要的作用,但也有其不足之处。比如整合包体量庞大,动不动就是10G以上,里面包含了各种定制者自己部署的插......
  • 【stable diffusion模型】Stability AI出官方教程了,带你轻松玩转Stable Diffusion 3.5
    前言提示(prompt)是有效使用生成式AI图像模型的关键技巧。提示的结构直接影响生成的图像的质量、创造力和准确性。今日凌晨,StabilityAI发布了StableDiffusion3.5的提示指南。该指南提供了StableDiffusion3.5的实用提示技巧,让使用者能够快速准确地完善图像概念,......
  • PyQt5-Qtablewidget
    创建表格fromPyQt5.QtWidgetsimportQTableView,QStyledItemDelegate,QComboBox,QTextEditfromPyQt5.QtCoreimportQAbstractTableModel,Qt,QModelIndex,QEvent,QRect,QSize,QVariantfromPyQt5.QtGuiimportQFontMetricsclassTaskTable(QTableWidget):de......
  • 解决table内容超常溢出时tooltip位置偏移的问题
      解决思路:<divstyle="width:100px;"data-toggle="tooltip"data-placement="top"title="${displayValue}">${displayValue.substring(0,5)+"..."}</div>这部分截取部分数据,超出...{field:&quo......
  • vue3 中,字段必须在 onShow 前定义?
    在Vue3中,如果你在组件的setup()函数中使用了生命周期钩子,比如onShow,你可能遇到了一个错误,提示你在onShow前定义了某个字段。这个错误通常意味着你尝试在组件的setup()函数中访问了一个在onShow钩子函数被调用之前尚未定义的响应式字段。为了解决这个问题,你需要确保你在......
  • vue3 h函数应用,el-table-v2定义column
    一、引入import{h}from'vue'二、column属性cellRenderer使用h函数h函数中嵌套Element组件Popconfirm{title:'注释',width:165,flexGrow:1,key:"str",dataKey:"str",cellRenderer:({rowData}:any)=>{......
  • 科普文:软件架构数据库系列之【MySQL状态参数:open table浅析和[ERROR] Error in accept
    概叙科普文:软件架构数据库系列之【MySQL状态参数:tablecache源码浅析】-CSDN博客MySQL经常会遇到Toomanyopenfiles,MySQL上的open_files_limit和OS层面上设置的openfilelimit有什么关系?源码中也会看到不同的数据结构,TABLE,TABLE_SHARE,跟表是什么关系?MySQLflushtable......