javascript - Vue:元素响应太慢而无法拖动事件
问题描述
我有一个页面基本上有两部分:左栏和右栏(更大的区域)。右列包含大约 1500 行(组件),每行包含 5 个 div 作为单元格。我曾经在这两列的父元素上绑定dragover事件。每次触发 dragover 事件时,都会出现一个覆盖 div 并覆盖整个窗口区域。下面的例子:
Javascript
let row = {
props: ['item'],
template: `<div class="row">
<div class="cell">{{item.value1}}</div>
<div class="cell">{{item.value2}}</div>
<div class="cell">{{item.value3}}</div>
<div class="cell">{{item.value4}}</div>
<div class="cell">{{item.value5}}</div>
</div>
};
new Vue({
el: '#parent',
components: {
'row': row
},
template: `<div id="parent" @dragover="showOverlay">
<!-- display if this.overlay == true, otherwise hide -->
<div class="overlay" v-show="overlay"></div>
<div class="left-column">Drag a file and drop</div>
<div class="right-column">
<row :rows="rows" v-for="item in rows"></row>
</div>
</div>`,
data: {
rows: [...],
overlay: false
},
methods: {
showOverlay(e) {
e.preventDefault();
this.overlay = true;
}
}
});
尽管滚动列表有点滞后,但代码运行正常。但是当我将文件拖到右列区域时,需要几秒钟才能显示覆盖,而拖到左列只需要不到一秒钟。
HTML
<div id="parent"></div>
解决方案
删除e.preventDefault();
功能;这导致延迟
推荐阅读
- c# - 对文化、流向和语言感到困惑
- php - 如何使用 MySQL 和 PHP 将每次登录的用户注销时间存储在数据库中?
- r - 过滤以在特定列中的特定值第一次出现之前删除所有行
- c++ - PLU分解的矩阵逆
- wpf - 使数据网格单元格的内容跨越多个相邻的单元格空间
- php - 插入新数据后 PHP api 无法正常工作
- postgresql - PostgreSQL 全局事务和还原时间点
- mariadb - 具有数据分片和集群的 mariadb 复制
- mips - srl 和 sll 在 ALU 中是如何工作的?
- amazon-web-services - 适用于 Quicksight 和 SageMaker 的 AWS Cloudformation?