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;
        }
      }
    }
  }
};
相关推荐
前端开发与ui设计的老司机1 分钟前
UI前端与数字孪生结合实践探索:智慧物流的货物追踪与配送优化
前端·ui
全能打工人3 分钟前
前端查询条件加密传输方案(SM2加解密)
前端·sm2前端加密
海天胜景25 分钟前
vue3 获取选中的el-table行数据
javascript·vue.js·elementui
翻滚吧键盘1 小时前
vue绑定一个返回对象的计算属性
前端·javascript·vue.js
苦夏木禾1 小时前
js请求避免缓存的三种方式
开发语言·javascript·缓存
超级土豆粉1 小时前
Turndown.js: 优雅地将 HTML 转换为 Markdown
开发语言·javascript·html
秃了也弱了。1 小时前
Chrome谷歌浏览器插件ModHeader,修改请求头,开发神器
前端·chrome
乆夨(jiuze)1 小时前
记录H5内嵌到flutter App的一个问题,引发后面使用fastClick,引发后面input输入框单击无效问题。。。
前端·javascript·vue.js
忧郁的蛋~2 小时前
HTML表格导出为Excel文件的实现方案
前端·html·excel
小彭努力中2 小时前
141.在 Vue 3 中使用 OpenLayers Link 交互:把地图中心点 / 缩放级别 / 旋转角度实时写进 URL,并同步解析显示
前端·javascript·vue.js·交互