javascript - Vue:用于检查未更新元素的 offsetHeight 的计算属性
问题描述
我有一个包含 50 个对象的数组的组件。
<template>
<div v-for="(item,index) in items" ref="items" :key="index">
//
</div>
</template>
props: {
items: {
type: Array,
required: true,
},
}
我想items
检查他们的道具,所以我做了一个计算属性,由他们offsetHeight
抓住并首先通过返回它来测试它。items
ref
computed: {
allItems() {
const all = this.$refs.items;
return all;
}
}
在 VueTools 中,如果我在模板中HTMLDivElement
使用 's的数组,它会按预期工作。allItems
items
现在我想实施检查offsetHeight
:
computed: {
allItems() {
const all = this.$refs.items;
return all.filter(x => {
x.offsetHeight > 300;
})
}
}
但这现在显示了计算属性,15
因此它过滤了它们,但是当我更改窗口高度时,UI 中的 offsetHeight 会发生变化,但计算属性15
无论如何都会显示。这不应该连续显示当前值吗?
解决方案
这不应该连续显示当前值吗?
不,因为HTMLElement.offsetHeight
是 Vue 无法观察到的原生属性。在 Vue 不知情的情况下,浏览器可以随时更改元素的高度。您必须使用另一种方式来响应元素大小的变化,例如使用ResizeObserver或监听窗口调整大小事件。
Vue 2 的反应系统仅适用于普通对象。有关更多信息,请参阅深度反应。
推荐阅读
- sql - 将多个简单查询转换为一个?
- docker - 将 docker 容器持续交付到 Google Cloud
- basic - Visual Basic 创建循环以计算偶数
- javascript - 使用键盘后 InsertText 功能不起作用
- python - Google Cloud Datastore Emulator 不使用默认凭据
- c++ - 应该翻转数字的程序的输出不正确
- amazon-web-services - ECS容器代理docker容器日志如何处理?
- google-bigquery - 大查询公共数据集事件/触发器?
- ms-access - Docmd.Findrecord 在文本框中查找
- angular - 如何在 WAR/EAR 中将 Angular 应用程序部署到 weblogic 服务器