Задать вопрос
@VegasChickiChicki

Как дождаться обновления query параметров при использовании $router.push в watch функциях?

Имеется следующий код:

watch: {
		ActivePage(value){
			let RouterParams = {};
			let RouterQuery = {
				...this.$route.query
			};

			if(value === 1 && RouterQuery.hasOwnProperty('page')) {
				delete RouterQuery.page;
			}

			if(value > 1) {
				RouterQuery.page = value;
			}

			RouterParams = {
				query: RouterQuery
			};

			this.$router.push(RouterParams);
		},
		PerPage(value){
			let RouterParams = {};
			let RouterQuery = {
				...this.$route.query
			};

			if((value === this.PageCapacity.filters[0].value) && RouterQuery.hasOwnProperty('perpage')) {
				delete RouterQuery.perpage;
			}

			if(value !== this.PageCapacity.filters[0].value) {
				RouterQuery.perpage = value;
			}

			RouterParams = {
				query: RouterQuery
			};

			this.$router.push(RouterParams);
		}
	}


ActivePage и PerPage - входные параметры.

Если изменить сразу оба параметра, с помощью мутации(данные лежат во vuex и передаются в компонент с помощью геттеров), то сначала отработает одна watch функция и потом другая, не дождавшись добавления параметров. Из-за этого одна функция затирает данные другой...

Есть ли возможность заставить их работать по очереди?
  • Вопрос задан
  • 100 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Skypro
    React-разработчик с нуля
    9 месяцев
    Далее
  • Skypro
    JavaScript-разработчик с нуля
    9 месяцев
    Далее
  • Skypro
    Frontend-разработчик с нуля
    9 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
yarkov
@yarkov Куратор тега Vue.js
Помог ответ? Отметь решением.
Есть ли возможность заставить их работать по очереди?

Обновлять по очереди
Ответ написан
Ваш ответ на вопрос

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

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