惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
U
Unit 42
MyScale Blog
MyScale Blog
B
Blog
阮一峰的网络日志
阮一峰的网络日志
量子位
IT之家
IT之家
The GitHub Blog
The GitHub Blog
F
Fortinet All Blogs
Recent Announcements
Recent Announcements
V
Visual Studio Blog
G
Google Developers Blog
Last Week in AI
Last Week in AI
雷峰网
雷峰网
博客园 - 聂微东
博客园 - 叶小钗
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
J
Java Code Geeks
博客园 - 司徒正美
Y
Y Combinator Blog
T
The Blog of Author Tim Ferriss
月光博客
月光博客
aimingoo的专栏
aimingoo的专栏

博客园 - 彭成刚

mp4转圆角gif.bat localforage js数据存储 localStorage 替代,可大数据存储 indexdb数据库 文件系统有 happy-opfs "editor.cursorSurroundingLines": 3, 光标周围行数 设置光标在第几行的时候滚动页面滚动条 Prettier - Code formatter BUG 读不到 根目录的 .prettierrc.js prettier.configPath 格式化失效 vue2 mounted后面括号应该没有空格 _.flow 管道函数 lodash 同步函数列表很哇塞啊 _.flow(caozuo1, caozuo2, caozuo3)(my_data) vue2 iview 组件 ref 起名规则 应该用文件名 <shouye_book_left ref="shouye_book_left" /> iview 日期组件 BUG 赋值变量选年度 然后当前年会有个蓝色底, 解决方案 :key="ccValue" ⭐️⭐️⭐️ 自定义组件 表单验证 v-model 自动更新验证 trigger: 'change' 不触发,解决方案 加 <Input v-model="formData.abc" /> vue2 iview ComfyUiApi comfyui_xy 安装-使用 mergeLeft 左合并json函数 alt+k vscode 执行 ccdev - 在editor 和 terminal 之间切换 splitTwo 分割2个元素,主要分割文件名和id等 pi.dev 试试这个cli - deepseek-flash-v4 C盘清理空间软件 c盘没空间了 Wise Disk Cleaner kceve 鼠标2口控制器 kvm 鼠标同步器 穿屏幕 快捷键 是 s + * 操作列css每个按钮a后面加竖线.css operation_class .prettierrc.js 我发现 这个格式化的配置 默认就不建议放全局,都是跟项目走的 grid-gap 在 chrome58 支持,然后chrome58 不支持 gird的gap,不支持flex的gap iview table columns.js 表头 带* 带星 renderHeader alt+F9 设置 open in terminal 打开当前文件terminal vscode idea 都设置成这个快捷键 配合 ccdev使用 ccdev go开发 cli开发 读取本地模版复制到剪切板 where.exe node 查看命令位置 powershell 注意不是 where node (新建了一个ccwhere.bat) vue2 vModel 组件绑定数据写法 ccValue reloadenv 函数 `code $PROFILE` vscode在不关闭下刷新环境变量 volta 安装记录 node多版本控制 && @native-sdk OmniVoice 记录 我觉得音色还原还不错 voiceclone-env 记录 vscode pwsh 全选快捷键 ctrl+a (powershell) ai专属使用 aitree 命令 ai配合重要命令 powershell vscode code $PROFILE 备份,配合conda使用vscode
vue2 hooks useInnerHeight.vue 解决Table高度实时更新
彭成刚 · 2025-08-26 · via 博客园 - 彭成刚

vue2 hooks useInnerHeight.vue 解决Table高度实时更新

背景

iview Table组件 有一个height的属性,为了实现浏览器改变,需要高度实时变化

useInnerHeight.vue

/src/hooks/useInnerHeight.vue

<template>
  <span style="display: hidden;"></span>
</template>

<script>
export default {
  components: {},
  props: {
    value: Number
  },
  data () {
    return {
      innerHeight: window.innerHeight,
    }
  },
  watch: {},
  computed: {
  },
  methods: {
    resizeHeight() {
      this.$emit('input', window.innerHeight)
    },
  },
  created () { },
  activated () { },
  mounted () { 
    window.addEventListener("resize", this.resizeHeight);
  },
  beforeDestroy () { 
    window.removeEventListener("resize", this.resizeHeight);
  }
}
</script>

<style lang="less" scoped>
</style>

app.vue

<template>
  <div id="app" style="width: 100%; height: 100%;">
    <useInnerHeight v-model="innerHeight"/>
  </div>
</template>

<script>
import useInnerHeight from '@/hooks/useInnerHeight'
export default {
  name: 'App',
  components: { useInnerHeight },
  data () {
    return {
      innerHeight: window.innerHeight,
    }
  },
  computed: {
  },
  created () {
    Vue.prototype.$app = this
  },
  methods: {
  },
  mounted () {
  },
  destroyed () {
  }
}
</script>
<style scoped lang="less">
</style>

业务页面.vue

<template>
   <div class="container-table mt10">
      <Table
        :height="tableHeight"
      >
    </Table>
  </div>
</template>

<script>
export default {
  components: {},
  props: {},
  data () {
    return {
    }
  },
  watch: {},
  computed: {
    tableHeight() {
      return this.$app.innerHeight - 180 - 40;
    },
  },
  methods: {
  },
  created () { },
  activated () { },
  mounted () {
   },
  beforeDestroy () { 
  }
}
</script>
<style lang="less" scoped>
</style>

使用的两种方法

  1. 全局使用,上面的用法就是全局使用,因为很多页面都会用到实时的innerHeight,所以就挂到了全局
  2. 局部使用,有的是业务代码,可以直接在业务页面使用。在页面创建一个变量,绑定到组件上。就不需要挂到全局使用了。