Vue.js - занимает слишком много времени, чтобы «уничтожить» компоненты - PullRequest
2 голосов
/ 25 апреля 2019

1 У меня есть компонент расписания, созданный с помощью vue.js и включающий около 200 дочерних компонентов временной шкалы в виде вложенной формы (я хотел загрузить изображение, но не смог без 10 репутаций).

Проблема в том, что для уничтожения этого компонента требуется более 6 секунд.

Chrome говорит, что функция 'remove' (которая вызывается vue.js каждый раз, когда мы уничтожаем компонент) вызывается много раз, и каждая из них занимает около 20 - 40 мс.

Функция удаления vue.js выглядит следующим образом:

function remove (arr, item) {
  if (arr.length) {
    var index = arr.indexOf(item);
    if (index > -1) {
      return arr.splice(index, 1)
    }
  }
}

и кажется, что первый аргумент, arr, это либо несколько VueComponents, либо более 2000 объектов Watcher.

Теперь мои вопросы: 1. Что такое «наблюдатель» в этом контексте и почему число превышает 2000? 2. Почему это занимает так много времени, несмотря на то, что я не работаю с 10000 компонентами?

Полагаю, это вопрос спецификации vue.js, но, пожалуйста, помогите мне, если у вас есть похожая проблема или у вас есть какие-либо идеи по этому поводу. Спасибо!

enter image description here Выше показан способ отображения временной шкалы, и каждая из панелей с серым фоном и панели с фиолетовым фоном (со значком человека) является дочерними компонентами. Когда вы щелкаете по фиолетовой панели, vue-router выполняет маршрутизацию к странице детализации, и в это время все компоненты уничтожаются (то есть, когда возникают вышеуказанные проблемы)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...