我在一个路由created
里通过axio获取了长为2000 events array绑定在Select(iviewui Select filterable,通过搜索选择,2000个也不是太多吧)上,如下
<Select v-model="eventId" style="width: 200px">
<Option v-for="event in events" :value="event.id">{{event.id + " " + event.name}}</Option>
</Select>
当我点击跳转 this.$router.push("/other")
发现界面卡死,debug发现js卡死在VUE的removeVnodes
函数
function removeVnodes (parentElm, vnodes, startIdx, endIdx) {
for (; startIdx <= endIdx; ++startIdx) {
var ch = vnodes[startIdx];
if (isDef(ch)) {
if (isDef(ch.tag)) {
removeAndInvokeRemoveHook(ch);
invokeDestroyHook(ch);
} else { // Text node
removeNode(ch.elm);
}
}
}
}
初学VUE,并不太了解路由跳转时内部在做那些事情,但貌似VUE在移除我这2000个节点,导致chrome内存不足crash,想问一下这个要如何解决,是不是我的实践方式不太对?
2000个太多了吧..