/** * 卡片内表格高度实测(Vue3) * 用法:mixin + 在表格容器上写 class="table-region" ref="tableRegion" * Table 用 :height="tableRegionHeight" */ export const element_height = { data() { return { tableRegionHeight: 0, }; }, mounted() { this.__measureTableRegion(); if (typeof ResizeObserver !== "undefined") { this.__tableRegionRO = new ResizeObserver(() => this.__measureTableRegion()); const el = this.$refs.tableRegion; if (el) this.__tableRegionRO.observe(el); } window.addEventListener("resize", this.__measureTableRegion); }, beforeUnmount() { if (this.__tableRegionRO) { this.__tableRegionRO.disconnect(); this.__tableRegionRO = null; } window.removeEventListener("resize", this.__measureTableRegion); }, methods: { __measureTableRegion() { const el = this.$refs.tableRegion; if (!el) return; const h = Math.floor(el.clientHeight); // 0 常见于隐藏容器/首帧,保留上次有效值 if (h > 0) this.tableRegionHeight = h; }, }, }; export default element_height;