Vue: Компонент исчезает при первом повторном рендеринге

Созданный на 15 авг. 2017  ·  5Комментарии  ·  Источник: vuejs/vue

Версия

2.4.2

Ссылка для воспроизведения

http://jsfiddle.net/yMv7y/3265/

Действия по воспроизведению

В JSFiddle дождитесь завершения setTimeout на L15 через две секунды.

Что ожидается?

Чтобы CustomElA все еще находился в DOM.

Что на самом деле происходит?

CustomElA удаляется из DOM при повторной визуализации. Однако он возвращается при третьем повторном рендеринге (проверено с использованием setInterval вместо setTimeout в JSFiddle на L16).


JSfiddle использует Vue v2.4.0, но я проверил ошибку на v2.4.2 локально.

Самый полезный комментарий

Похоже на ошибку, спасибо, что сообщили о ней. Похоже, это было введено в 2.1.4. Однако похоже, что проблема возникает во время патча vnodes.

edit: похоже, что _isDestroyed ложно в init во время патча vnode, что заставляет его не вызывать монтирование и исчезать из дерева узлов

Все 5 Комментарий

Похоже на ошибку, спасибо, что сообщили о ней. Похоже, это было введено в 2.1.4. Однако похоже, что проблема возникает во время патча vnodes.

edit: похоже, что _isDestroyed ложно в init во время патча vnode, что заставляет его не вызывать монтирование и исчезать из дерева узлов

Это исправлено, но учтите, что, поскольку вы меняете элемент, оборачивающий слоты, элемент считается "замененным", и, таким образом, все содержимое слота, включая компоненты в нем, будет уничтожено, а затем создано заново. К сожалению, так работает патч vdom и вряд ли что-то изменится.

@ yyx990803
Звучит хорошо, спасибо. У вас есть приблизительная дата выхода следующего релиза?

Также интересно, когда выйдет следующий выпуск, или, тем временем, есть ли способ установить эту версию? Благодарю.

@ Tolmark12 клонирует npm link чтобы использовать локальную версию vue 😉 (это очень грубые инструкции)

Была ли эта страница полезной?
0 / 5 - 0 рейтинги