kotcich
@kotcich
Я скучный.

Как сделать route.push на ту же страницу, но с изменением параметров?

localhost:8080/menu/1 это моя ссылка

1 это параметр p отвечающий за номер страницы, но так же в ней есть параметр s отвечающий за per-page для rest api.
Я не хочу выводить в ссылке все числа для фильтрации и пагинации(ведь их может быть и больше).
Поэтому я параметр s тупо не вывожу, а хочу его менять в коде незримо для клиента.
Но в этом случаи
this.$route.params.s = new value
меняет значение (консоль логом проверял до и после), но вот router.push не воспринимает ссылку как новую, вот как я это пишу:
this.$route.params.s = new value;
this.$router.push({ name: 'menu', params: { s: this.$route.params.s, p: nextPage }});


Можно ли vue routing заставить понять, что это новая ссылка или он воспринимает только то, что непосредственно написанно в URL?

И еще одна причина по которой мне нужно это, сделать возможность перемещения по страницы через кнопки браузера (стрелочки), так как многие юзеры просто привыкли их кликать, соответсвенно хочу на 2 стула сесть, и URL красивой сделать, и сделать router.push.
  • Вопрос задан
  • 719 просмотров
Решения вопроса 1
@Kostik_1993
Web Developer
Не получтся прятать параметры и удачненько ходить по страницам. А вот чтобы Vue не ругался на то что вы пытаетесь перейти по тому же адресу добавьте .catch({}) после push
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
kulakoff
@kulakoff Куратор тега Vue.js
Vue.js developing
Вообще надо проверить, что props: true стоит для данного маршрута и добавить для данного компонента соответствующее свойство в props и должно работать вроде. Еще нужно учитывать, что уже находясь на данном маршруте, хуки жизненного цикла компонента не будут вызываться, поэтому если в них что-то есть нужно эту логику в watch переносить или генерировать уникальный key для компонента, чтобы вызывать принудительную перерисовку.
Ответ написан
Ваш ответ на вопрос

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

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