Изменение маршрута после статуса 200

#javascript #vue.js #async-await #axios

#javascript #vue.js #асинхронный -ожидание #axios

Вопрос:

Я пытаюсь изменить свой маршрут на / despesas после того, как получу статус входа в систему для работы (статус: 200).

 async EnvioLogin() {
  const response = await axios.post("api/auth/login", {
    email: this.email,
    password: this.password,
  });
  localStorage.setItem("token", response.data.token);

  const status = JSON.parse(response.data.response.status);
  if (status == "200") {
    this.$router.push("/despesas");
  } else {
    showError(true), setTimeout(showError(false), 3000);
  }
},
 

Когда я вхожу в систему и проверяю в своем браузере, появляется это сообщение:

 {data: {…}, status: 200, statusText: "OK", headers: {…}, config: {…}, …}

[Vue warn]: Error in v-on handler (Promise/async): "TypeError: Cannot read property 'status' of undefined"
 

Комментарии:

1. Похоже, у вас слишком много response «s response.data.response.status «.

2. должно ли это быть просто response.status?

Ответ №1:

это должно быть response.status или просто вы можете выполнить проверку…

 if (response.ok) {
  /* do something */
} else {
  /* do something */
}
 

response.ok аналогичен тому, что у вас есть в statusText: ok :

 {data: {...}, status: 200, statusText: "ok", .... }
 

Ответ №2:

Похоже response.data.response.status , не определено.

Поместите a console.log(response) над строкой, в которой вы ее вызываете, и проверьте правильную структуру.

Скорее всего, будет response.status

Комментарии:

1. я выполнил JSON.parse(response.status) (работал) с console.log(ответ). Появляется новая ошибка: не перехвачено (в обещании) NavigationDuplicated: избегается избыточная навигация к текущему местоположению: «/ despesas».

2. Вероятно, это связано с тем, что вы отправляете этот запрос из / despesas route

3. Попробуйте const path = /despesas if (this.$route . путь !== путь) this.$router.push(путь)

4. Обратите внимание, что подсказка маршрута — это своего рода обходной путь. Вероятно, вам следует исправить свои маршруты или перенаправление.