он себя так ведёт.
Сделал миддлвару access
router: {
middleware: ['auth', 'access']
}
В ней при каждом переходе роутера проверяю доступ к странице:
export default function ({ store }) {
store.app.router.beforeEach((to, from, next) => {
console.log('check access -'+to.name)
if(hasAccess(store.app.$auth.user, to.name)) {
next()
} else {
next(false)
}
})
}
Дальше - чудеса...
Кликаю на ссылку, next() срабатывает, переход осуществляется. В консоли вижу мой лог
check access -sessions
Пока на вид всё ок.
Кликаю следующую ссылку, получаю в консоли 2 вызова:
check access -test1
check access -test1
Кликаю ещё - получаю уже три вызова.
check access -test2
check access -test2
check access -test2
И так, с каждым переходом роутера, у меня метод срабатывает N+1 раз...
Что это за фигня и почему так?
Выходит, что через 2 часа пользования приложухой, она будет 100500 раз дёргать проверку... Куда копать?
если память не подводит, мидлвара будет срабатывать на каждый роут где она навешана. Поэтому гуляя по сайту вы будете навешивать свой скрипт .beforeEach и потому они у вас накапливаются. Смотрите какой контекст у мидлвары есть и через него решайте задачу для конкретного роута. А то добираться до роутера через стору, ну такое себе. https://nuxtjs.org/api/context/
Обсуждают сегодня