Vue хук beforeRouteLeave не срабатывает из mixin или из базового компонента
Есть необходимость на некоторых компонентах уведомлять о не сохранённых пользователем изменениях перед уходом со страницы. Использование beforeRouteLeave прямо в компонентах решает проблему, но хотелось бы использовать его как-то глобально, чтобы не описывать его каждый раз в каждом компоненте, где это необходимо.
beforeRouteLeave не срабатывает из mixin или из базового компонента. При этом, другие хуки работают из mixin.
Пробовал фабричную функцию:
export const createRouteLeaveMixin = () => ({
beforeRouteLeave(to, from, next) {
alert('Сработал routerMixins - beforeRouteLeave');
// next();
},
});
Пробовал использовать beforeRouteLeave в mixin и таким образом:
export default {
created() {
this.beforeRouteLeave = (to, from, next) => {
alert('beforeRouteLeave сработал');
};
}
}
Ну и пробовал просто использовать хук. В самом компоненте beforeRouteLeave отсутствует, так что они не могут перекрывать друг-друга с mixin.
Ответы (1 шт):
В миксине можно пробовать ещё вот так
export default {
created(){
let route = this.$route.matched[0];
if(!route) return;
route.leaveGuards = new Set([function(to, from, next){
alert('beforeRouteLeave сработал')
next();
}]);
}
}