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, но, пожалуйста, помогите мне, если у вас есть похожая проблема или у вас есть какие-либо идеи по этому поводу. Спасибо!
Выше показан способ отображения временной шкалы, и каждая из панелей с серым фоном и панели с фиолетовым фоном (со значком человека) является дочерними компонентами.
Когда вы щелкаете по фиолетовой панели, vue-router выполняет маршрутизацию к странице детализации, и в это время все компоненты уничтожаются (то есть, когда возникают вышеуказанные проблемы)