Vue router 跳转卡死?

我在一个路由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,想问一下这个要如何解决,是不是我的实践方式不太对?

阅读 9.8k
2 个回答

2000个太多了吧..

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题