html - 如何让 Vuetify v-for 渲染更快
问题描述
您好,我是 vuejs 和 vuetify 的新手,我现在想显示大约 400 列和 6 行的项目,colum_id (cid) 和 row_id(rid) 但渲染速度很慢对不起,我知道如何提高这个循环性能谢谢在手:
<v-layout>
<div class="reglahan-table-result-betting">
<tr
v-for="i in 6"
:key="i">
<td
v-for="j in 60"
:key="j">
<div
v-for="(item, k) in props.resultBetting"
:key="k">
<span
v-if="Number(item.cid) === j && Number(item.rid) === i"
:class="item.color"
/>
</div>
<span class="no-circle" />
</td>
</tr>
</div>
</v-layout>
解决方案
当然你可以优化它。问题是在你最内部的循环中,你循环数组的每个元素。你不应该那样做。
首先,您需要正确索引您的表,我将创建一个“计算”函数,如下所示:
computed: {
indexedResultBetting: function () {
let ret = {}
self.props.resultBetting.forEach(function(item, index){
if(!item.rid in ret)
ret[item.rid] = {}
ret[item.rid][item.cid] = item.color
})
return ret
}
}
然后你可以简单地用类似的东西来展示它:
<v-layout>
<div class="reglahan-table-result-betting">
<tr
v-for="i in Object.keys(indexedResultBetting)"
:key="i">
<td
v-for="j in Object.keys(indexedResultBetting[i])"
:key="j">
<div
<span
:class="indexedResultBetting[i][j]"
/>
</div>
<span class="no-circle" />
</td>
</tr>
</div>
</v-layout>
我还没有测试它,肯定有一些修补要做。
推荐阅读
- ember.js - ember 垂直集合仅在单击时呈现
- javascript - 对加载有 ajax 的表进行排序
- javascript - 如何获取 chrome tab changeInfo 的类型?
- r - 如何从图中删除顶点并在其邻居之间创建边?
- c++ - 当文本框包含浮点值时如何在MFC中获取文本框的值
- python - 输出层有四个节点,但我想使用其中一个节点的输出,我该如何解决?
- c# - 子类和抽象类上的等于运算符
- wordpress - WordPress 中自定义分类法之间的关系
- node.js - 节点邮件模块的 html 支持
- google-bigquery - 谷歌云存储加入多个 csv 文件