@lookingfor2

Как заставить компонент отрисоваться заново при роутинге?

Это роутер
import {apiGetUser} from "../api/api";


import Vue from 'vue';
import VueRouter from 'vue-router';
Vue.use(VueRouter);

const router = new VueRouter({
    mode: 'history',
    base: "quiz/",
    routes: [
        {
            path: "/:step([1-9]{1}|[1-9]{2})",
            name: "step",
            component: () => import('../components/Question.vue'),
            beforeEnter: async (to, from, next) => {
                const user = await apiGetUser();
                if (user.data.data.ended) {
                    return next({ name: 'finish' });
                }

                if (user.data.data.step !== to.params.step) {
                    return next({ name: 'step', params: {step: user.data.data.step} });
                }

                return next();
            }
        }
    ],
});

export default router;


Здесь, при успешном запросе, я делаю редирект из компонента vue
methods: {
        next: async function (e) {
            const data = new FormData(e.target);
            // console.log(this.$router)
            const response = await apiQuestion('POST', this.$route.params.step, data);
            if (response.data.success){
                console.log('new step', this.$route.params.step + 1);
                this.$router.push({
                    name: 'step',
                    params: {
                        step: this.$route.params.step + 1
                    }
                })
                    .catch(error =>{
                        console.log(error);
                    });
            }
            if(!response.data.success){
                this.$toast.error(response.data.message);
            }
        }
    }


Вижу что url меняется, но компонент component: () => import('../components/Question.vue') из роута "step" не рендерятся заново, так как mounted уже отработал, как заставить при редиректе рендерить заново компонент

Нужно мне это, так как на mounted у меня отправляется запрос, и перебираются данные из ответа апи
  • Вопрос задан
  • 140 просмотров
Решения вопроса 1
Aetae
@Aetae Куратор тега Vue.js
Тлен
Не надо так делать. Вместо этого watch на step и там делай запрос.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы