Дергается контент при запросе на сервер, Vue.JS

При переходе по внутренним маршрутам по типу '/course/lesson3' происходит запрос на сервер для получения контента. Если переходить по маршруту кликнув на router-link, то контент отображается нормально. Но если менять url вручную, например, с '/course/lesson3' на '/course/lesson2', то контент компонента Lesson дергается. Сначала на мгновение отображается контент старого маршрута '/course/lesson3', а затем нового. Некрасиво. Для лучшего визуального отображения стоит анимация на 0.5с. Этого времени достаточно, чтобы сделать запрос. Тем не менее контент дергается, если вручную менять url. Что я делаю не так?

PS. Пробрасываю action с запросом на сервер в хуках beforeRouteUpdate и beforeRouteEnter, чтобы запрос шел если перешел через router-link и если ввел маршрут вручную в url.

routes.js

const routes = [
   {
       name: 'menu',
       path: '/',
       component: Menu,
       children: [
           {
               path: '/course',
               component: LessonsList,
               children: [
                   {
                       name: 'lesson',
                       path: 'lesson:id',
                       component: LessonProxy
                   }
               ]
           }
       ]
   }
];

LessonsList.vue

<template>
    <section>
    <ul>
        <router-link v-for="(lesson,index) in lessons"
                     v-bind:key="index"
                     :to="{
                        name: 'lesson',
                        params: {
                            id: index+1
                        }
                     }"
                     tag="li">
        </router-link>
    </ul>
    <transition name="slide" mode="out-in" appear>
        <router-view :key="$route.path"></router-view>
    </transition>
    </section>
</template>
   

LessonProxy.vue

<template>
    <section>
        <lesson></lesson>
    </section>
</template>

    export default {
        components: {
            Lesson
        }
        methods: {
            ...mapActions('lesson',{
                changeCurrentLesson: 'changeCurrentLesson'
            })

        },
        beforeRouteEnter(to,from,next){
            next(vm => {
                    let sendData = {};
                    sendData.lessonNumber = Number(to.params.id);
                    sendData.userId = vm.$store.getters['login/userId'];
                    vm.$store.dispatch('lesson/changeCurrentLesson', sendData);
            });
        },
        async beforeRouteUpdate(to,from,next){
                let sendData = {};
                sendData.lessonNumber = Number(to.params.id);
                sendData.userId = this.$store.getters['login/userId'];
                await this.$store.dispatch('lesson/changeCurrentLesson', sendData);
                await next();
        }
    }

Ответы (0 шт):