Здравствуйте. Есть SPA на vue.js возник такой вопрос. Есть обычный сайдбар который выкатывается справа по клику на гамбургер на мобильных. Нужен такой behavior – человек кликает на гамбургер меню отктрывается (легко) после того, как он кликает на ссылку, происходит переход на страницу и в этот же момент нужно убирать класс с боди чтобы меню закрылась ( в этом месте как раз проблема). Если сделать по обычному, то есть просто ловить клик внутри сайдбара по ссылку и снимать класс то меню закрывается без transition – просто схлопывается и это наверное из за того, что подгружается контент страницы во время клика на ссылку (не уверен). Так как все таки правильно сделать это?
JQuery подобный код (но не jquery). Сделал так – работает. Но не уверен что это по православному.
$('.sidebar__item').on('click', function() {
setTimeout(function() {
if ($('body').hasClass('sidebar--open')) {
$('body').removeClass('sidebar--open');
}
}, 100);
})
UPDATE
В общем я нашел логичную закономерность. Нет анимация только в том случае, когда меняется layout, то есть вся страница например с /page1 на /page2 не будет анимации. Анимация есть при переходе например /page1/subpage1 или /page2/subpage2.
Есть решение для этого? Опасно ли юзать setTimeout?