Почему axios возвращает ошибку обещания в reactjs

у меня появляется ошибка каждый раз, когда я нажимаю кнопку при входе в систему

TypeError: Cannot read property 'then' of undefined

, но после перезагрузки ошибка исчезла. могу я узнать, что случилось? вот мой код при входе в систему

onSignIn(e){
    e.preventDefault()

    this.Auth.login(this.state.signInUsername, this.state.signInPassword)
      .then(res => {
        this.props.history.replace('/')
      })
      .catch(err => {
        alert(err)
      })
  }

и это мой код авторизации:

login(username, password){
    axios.post('http://localhost:3000/user/login', {
      username,
      password
    })
    .then(this._checkStatus)
    .then(res => {
      if (res.data.success === true){
        const payload = {
          name: username,
        }
        this.setToken(payload)
        return Promise.resolve(res)
      }else{
        console.info(res.data.message)
      }
    })
    .catch(err => {
      return Promise.reject(err)
    })
  }
.catch(err => { return Promise.reject(err) }) лишний, брось.
Bergi 01.11.2018 15:46
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
1
118
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

вернуть аксиомы из функции входа в систему.

login(username, password){
    return axios.post('http://localhost:3000/user/login', {
      username,
      password
    })
    .then(this._checkStatus)
    .then(res => {
      if (res.data.success === true){
        const payload = {
          name: username,
        }
        this.setToken(payload)
        return res;
      }else{
        console.info(res.data.message)
      }
    })
    .catch(err => {
      throw err;
    })
  }

после того, как я использовал ваш код, это действие не работает this.props.history.replace ('/')

Yosua Michael 01.11.2018 15:45

все еще не могу, мне нужно перезагрузить страницу, затем можно перенаправить

Yosua Michael 01.11.2018 16:07

Я использовал window.location.href = '/' и работал, но не знаю, лучший ли это способ.

Yosua Michael 01.11.2018 16:45

Я считаю, что у вас есть -two- ".then" для вашего axios.post. В примере, приведенном на сайте axios, используется

axios.post('/user', {
    firstName: 'Fred',
    lastName: 'Flintstone'
  })
  .then(function (response) {
    console.info(response);
  })
  .catch(function (error) {
    console.info(error);
  });

только один. затем на вызов Axios.

Другие вопросы по теме