我有大约4000个对象通过AJAX返回.我用v-for循环它们并将它们吐出到表中.
初始加载和渲染非常快,但我也有一个输入字段,我用于'即时搜索'.我使用一个计算属性来使用输入值和一个小数据集来过滤数据集,比如最多大约100个结果,这可以很好地工作,但随着数据集变大,它会慢得多.
我正在渲染一个包含4个值的表,其中一个是自定义组件.删除组件可以加快速度,但我很惊讶这是一个糟糕的性能影响.我不确定是否有什么东西我不知道或者有人能指出我正确的方向吗?
我知道它有一个页面的大量数据,但我认为这是Vue应该擅长的.我搜索了这个问题,例如我发现这个codepen呈现了一个类似的项目列表,并以完全相同的方式进行过滤,我可以将数组中的项目数量一直复制粘贴到10,000左右,并且没有可察觉的搜索时性能受到影响.
我采取的步骤是为了加快速度,这些步骤已经做了很小的改进或没有改进:
谢谢
它希望我在这里粘贴代码,即使我已经链接到codepen所以这里是没有items数组的JS.
Vue.component('my-component', {
template: '#generic-picker',
props:['items','query','selected'],
created: function(){
this.query='';
this.selected='';
},
computed:{
filteredItems: function () {
var query = this.query;
return this.items.filter(function (item) {
return item.toLowerCase().indexOf(query.toLowerCase()) !== -1})
}
},
methods:{
select:function(selection){
this.selected = selection;
}
}
})
// create a root instance
var genericpicker = new Vue({
el: '#example'
});
Run Code Online (Sandbox Code Playgroud)