TL;DR
При unmount Vue не вызывает обработчики на узлах, если они не попадают в dynamicChildren.
Было замечено, что при асинк рендере в некоторых случаях у функциональных компонентов не вызывается хук beforeUnmount, потому что он не попадает в dynamicChildren.
Также стоит проверить кейс для обычного рендера.
Подумать какие ещё могут быть кейсы, возможно проблема актуальна не только для unmount, но и для других хуков (created, updated и т.п.)
Аффектит директивы: v-icon, v-bind-with, v-in-view, v-on-resize, v-analytics, v-rtb, v-touch, v-zoom
Первый пример в ветке examples/1510. Здесь пришлось отключить вызов unmount внутри движка директивы, чтобы показать в каких случаях Vue не вызывает unmount узлов.
Смотреть последовательно шаблоны компонентов: b-example-issue-* (one, two, three). Эти 3 примера произрастают друг из друга, в них показаны ситуации когда в начале v-hook ломается, потом начинает работать, а потом опять ломается.
Второй пример в ветке examples/1510-unmodified.
Здесь показан баг с очисткой узлов и функциональных компонентов при использовании асинк-рендера.
TL;DR
При unmount Vue не вызывает обработчики на узлах, если они не попадают в dynamicChildren.
Было замечено, что при асинк рендере в некоторых случаях у функциональных компонентов не вызывается хук beforeUnmount, потому что он не попадает в dynamicChildren.
Также стоит проверить кейс для обычного рендера.
Подумать какие ещё могут быть кейсы, возможно проблема актуальна не только для unmount, но и для других хуков (created, updated и т.п.)
Аффектит директивы:
v-icon,v-bind-with,v-in-view,v-on-resize,v-analytics,v-rtb,v-touch,v-zoomПервый пример в ветке
examples/1510. Здесь пришлось отключить вызов unmount внутри движка директивы, чтобы показать в каких случаях Vue не вызывает unmount узлов.Второй пример в ветке
examples/1510-unmodified.