Vue3 + TypeScript 操作第三方库(Element Plus 的 ElTable)的内部属性

1、定义 ElTable 扩展实例类型,包含内部 store 属性

TypeScript 复制代码
import { ElTable } from "element-plus";

// ElTable 扩展实例类型,包含内部 store 属性
export type ElTableExtendedInstance = InstanceType<typeof ElTable> & {
  store: {
    states: {
      columns: {
        property?: string;
        // 其他列属性...
      }[];
    };
  };
};

2、定义表格实例对象(ElTable 扩展实例类型 ElTableExtendedInstance)

TypeScript 复制代码
// 表格实例对象
const tableRef = ref<ElTableExtendedInstance | null>(null);

3、操作内部属性 columns,columns 是 Ref 对象,所以需要 columns.value

TypeScript 复制代码
let columns = tableRef.value?.store.states.columns.value;
TypeScript 复制代码
// 加载表格列宽
const loadColumnWidth = () => {
  let columns = tableRef.value?.store.states.columns.value;
  if (!columns || !Array.isArray(columns)) return;
  for (let column of columns) {
    let prop = column.property;
    if (prop) {
      // 从本地存储中获取列宽
      let storageColWidth = localStorage.getItem(`reagent_colWidth_${prop}`);
      if (storageColWidth) {
        column.width = parseInt(storageColWidth) > 0 ? parseInt(storageColWidth) : column.width;
      } else {
        // 从表格列配置列表中获取列宽
        let configColWidth = columnConfigs.value.find((item) => item.prop === prop)?.width;
        if (configColWidth) {
          column.width = configColWidth;
        }
      }
    }
  }
};
相关推荐
计算机魔术师3 小时前
飞书与豆包合并后首款Agent产品"豆包工作"发布
前端
独孤九剑打醒他3 小时前
从“铁块一直在辐射电磁波“到EUV光源:微波等离子体MPP架构全链路推演
前端·架构·硬件工程
光电的一只菜鸡3 小时前
高通tuning中eis需要调什么
java·开发语言·前端
quweiie4 小时前
腾讯云视频点播-web上传视频
前端·音视频·腾讯云·上传视频·腾讯云视频点播
API快乐传递者4 小时前
1688 跨境电商 API 接口实战指南:从寻源到代采的全链路技术方案
java·前端·数据库
马可家的菠萝4 小时前
收藏不是终点:一个真正有用的个人知识库,至少要完成“收集 → 理解 → 行动”
前端·后端·架构
明月_清风5 小时前
看完 DSH 文档后,我总结了这 7 个关键点
前端·后端·deepseek
qq_452396235 小时前
第八篇:《Monorepo 实战:Turborepo 与 pnpm workspace 驱动的大型项目协作》
前端
数据狐(Datafox)5 小时前
1688.item_search工程实战:1688商品列表API分页采集与B2B货源数据分析落地
java·前端·数据分析