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;
        }
      }
    }
  }
};
相关推荐
仿生狮子4 小时前
OpenAI 攻下千禧年难题之后,开发者似乎无动于衷
前端·数学·vibecoding
夏幻灵8 小时前
JavaScript this 面试:五种绑定规则、优先级与常见面试陷阱
开发语言·javascript·面试
Lvan的前端笔记8 小时前
docker:每个前端项目一个 Nginx 容器还是只有一个Nginx容器
前端·nginx·docker
三天不学习8 小时前
Egg.js 4 突然爆火,原因是否归结于AI 原生落地需求爆发?
前端·javascript·全栈·egg.js
xcs194059 小时前
前端 vue 的前端页面debugger 进不去
前端·javascript·vue.js
明月_清风10 小时前
Deno 终局来了:从挑战 Node 到被 Cloudflare 收编
前端·后端·node.js
Csvn11 小时前
框架性能优化
前端
回眸&啤酒鸭12 小时前
【回眸】OpenSwarm 多智能体协作系统实战指南
大数据·前端·人工智能
用户693717500138413 小时前
2026,程序员的时代拐点到了
android·前端·后端
大龄秃头程序员13 小时前
一次 iBeacon + BLE 无感解锁方案的实现记录
前端