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;
        }
      }
    }
  }
};
相关推荐
humcomm8 小时前
AI编程时代新前端职位
前端·ai编程
好家伙VCC8 小时前
Web Components主题热切换方案揭秘
java·前端
甲维斯9 小时前
Kimi版超级玛丽效果“惊人”,配额不足5厘米!
前端·人工智能
hboot9 小时前
AI工程师第一课 - Python
前端·后端·python
凉菜凉凉9 小时前
AI时代,被抛弃的前端
前端·ai
console.log('npc')9 小时前
AI前端工程与生成式UI学习路线
前端·人工智能·ui
huangdong_9 小时前
淘宝商品SKU图自动分类技术深度解析:从DOM解析到智能归档
开发语言·javascript·ecmascript
梦曦i9 小时前
uni-router v1.1.1发布:守卫超时保护+路由监听
前端·uni-app
qq_25183645710 小时前
基于java Web网络订餐系统设计与实现 源码文档
java·开发语言·前端
飞天狗11110 小时前
零基础JavaWeb入门——第2课:让网页“活”起来 —— JSP是什么?
java·开发语言·前端·后端·web