如何将异步函数的返回值分配给React Native中的变量

时间:2016-03-31 20:51:59

标签: javascript react-native

我尝试在JavaScript和React Native Framework中找到自己的方法:

基本上我正在尝试的是通过fetch与API对话,所以我设置了一个AsyncFunction:

class MyComponent extends React.Component {
     async getToken(client_id, client_key, username, password) {
        try {
        let response = await fetch('https://expample.com/o/token/', {
            method: 'POST',
            body: JSON.stringify({
              client_id: client_id,
              client_secret: client_key,
              grant_type: 'password',
              username: username,
              password: password,
            })
          });
          let responseJson = await response.json();
          return responseJson.access_token;
        } catch(error) {
          console.error(error)
        }
      }
...
}

但现在我不知道如何调用这个函数。

var token = getToken.token

只是给出语法错误和

'token': getToken.token

也没有做到这一点。

1 个答案:

答案 0 :(得分:2)

您可以将响应分配给组件的状态,如下所示:

class MyComponent extends React.Component {
  constructor(props) {
    super(props);
    this.state = { token: null, };
  }

  async getToken(client_id, client_key, username, password) {
    try {
    let response = await fetch('https://example.com/o/token/', {
        method: 'POST',
        body: JSON.stringify({
          client_id: client_id,
          client_secret: client_key,
          grant_type: 'password',
          username: username,
          password: password,
        })
      });
      let responseJson = await response.json();
      this.setState({ access_token: responseJson.access_token });
    } catch(error) {
      console.error(error)
    }
  }
}