无法使用React中的Fetch API获取数据

时间:2016-11-03 20:36:26

标签: javascript reactjs fetch-api

我有以下函数使api调用并获取数据。

export function getUserData(url){

  return fetch(url, { credentials : 'include'})
              .then((response) => { return response.json()})
              .then((data) =>{ return new User(data.uid, data.givenName, data.familyName)})
}

这是我的用户对象。

class User{
  constructor(uid, givenName, familyName){

    this.uid = yguid;
    this.givenName = givenName;
    this.familyName = familyName;
  }
}
export default User;

现在在我的react组件中,我正在尝试实例化User对象。

class Header extends React.Component {

    constructor(props) {
      super(props);
      this.state = { fullName: null, yguid: null };

    }
    componentWillMount(){
       user = getUserData(url);
       console.log(user);
       //set state with User data
    }

我的React组件中有以下import语句。

import User from '../models/user';
import '../api/util';

我的用户和函数getUserData都是未定义的。我做错了什么,我该如何解决它。提前谢谢。

1 个答案:

答案 0 :(得分:0)

您的代码user = getUserData(url)正在将用户设置为获取承诺。你还需要在那里设置一个解析器。我会写它像

componentWillMount(){
 let user; 
 // getUserData actually returns a promise. resolve with a .then and set user to result
getUserData(url).then((result) => {
 user = result;

 console.log(user); // user should be defined here

 // not sure if user is a state object or not but if it is set it like this
 this.setState({user: user})
 })
}