React Js Context未捕获(承诺)TypeError:无法读取未定义的属性“ data”

时间:2020-06-03 02:13:36

标签: javascript reactjs

我正在使用React并从api请求数据,但似乎我的“数据”出现错误

我的课堂如下:

class Login extends Component {
  constructor() {
    super();

this.state = {
  UserName: '',
  Password: '',
  var:'',
}
this.Login = this.Login.bind(this);

  }

  Login(event) {
    debugger;
    api.post('/api/login', {
      UserName: this.state.UserName,
      Password: this.state.Password,
    })
      .then((result) => {
        if (result.data.Status === 'Success') {
          this.setState({var: result.data.status});
          alert("User login Successfully");                                                                                                         
        } else {
          alert('Invalid User');
        }
        debugger;
      })
  }

我正在尝试登录。 用户提出请求后,我将从api和 setState 我的 var

中获取一些数据

错误提示我的result.data.Success错误。我对堆栈溢出进行了一些研究,其中提到了我使用的 Arrow Function 。还是任何snytax错误?

3 个答案:

答案 0 :(得分:1)

好像您的api可能导致undefined作为响应。

因此请检查结果

.then((result) => {
        if (result && result.data.Status === 'Success') {

答案 1 :(得分:1)

我认为result.data.data.Status是正确的方法。或者,您可以使用console.log()或调试器进行打印,以查看结果的格式

答案 2 :(得分:0)

好,这是我的坏事。 登录的整个过程是用户成功登录后,我的API会传递回令牌。稍后,在我的另一个js中,导出default api是使用axios的拦截器。 我在那里设置了一个gettoken函数,但是起初我正在处理登录,因此前端没有存储令牌。结果是,拦截返回错误-导致未定义

我的Api代码如下:

import {Component} from 'react';
import axios from 'axios';

const instance = axios.create({
    baseURL: 'http://localhost:9999/'
});

instance.interceptors.request.use(function (config) {
    config.localStorgae.getItem('token');
    return config;
}, function (error) {
    return Promise.reject(error);
});