React Native,在异步功能后获取

时间:2018-10-31 17:24:36

标签: react-native ecmascript-6 async-await fetch

我有一个不知道如何解决的问题...

我在AsyncStorage中保存了一个api令牌,当我想要获取其余信息时,我需要这个api令牌,但是我不知道该怎么做。

  

我有带有AsyncStorage函数的Functions.js文件。

async retrieveItem(key) {
  try {
    const retrievedItem =  await AsyncStorage.getItem(key);
    const item = JSON.parse(retrievedItem);
    return item;
  } catch (error) {
    console.warn(error.message);
  }
},
getApiToken: function(){
   try {
        return Functions.retrieveItem('api_token');
      } catch (error) {
        console.warn(error.message);
      }
    },
  

具有提取功能的文件。 (Api.js)

我使用异步功能进行了测试,但未找到...

async get(url) {

    try {
        var api = await Functions.getApiToken();

        if (!api)
            api = "";

        let opt = {
            method: 'get',
            headers: new Headers({
                'Content-Type': 'application/x-www-form-urlencoded'
            }),
        };

        return fetch(baseUrl + url + api, opt);
    } catch (error){
        console.warn(error);
    }       

},

当我执行抓取功能时,它对我来说毫无问题

  

还有屏幕文件Home.js

componentDidMount() {

  Api.get('home').then( response => {
    this.setState({
        profiles: response.profiles,
    });
  });
}

1 个答案:

答案 0 :(得分:2)

请稍微修改您的Functions.js代码-

async retrieveItem(key) {
  try {
    const retrievedItem = await AsyncStorage.getItem(key);
    const item = JSON.parse(retrievedItem);
    return item;
  } catch (error) {
    console.warn(error.message);
  }
},

async getApiToken{
  try {
    let token = await retrieveItem('api_token');
    return token;
  } catch (error) {
    console.warn(error.message);
  }
}

希望这对您有帮助!