11

我有一个登录表单,我可以发布表单值。在成功的 POST 请求之后,我得到了从 API 返回的身份验证令牌。我需要将此令牌保存在本地存储中以供将来参考。为了保存这个身份验证令牌,我使用了 AsyncStorage。我使用AsyncStorage.setItem(STORAGE_KEY, responseData.auth_token);setItem 方法来保存数据。

如果我通过以下方式进行控制台记录:

console.log(AsyncStorage.setItem(STORAGE_KEY));

它像这样作为 promise 对象返回

    Promise {_45: 0, _81: 0, _65: null, _54: null}
_45
:
0
_54
:
null
_65
:
"efcc06f00eeec0b529b8"
_81
:
1
__proto__

: 目的

如何从 AsyncStorage.getItem 方法中获取确切值?

这是我的获取方法

fetch('http://54.255.201.241/drivers', {
    method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      first_name: this.state.firstName,
      mobile_number: this.state.mobileNumber,
      vehicle_number: this.state.vehicleNumber,
      vehicle_type_id: 1,
    })
  }).then((response) => response.json()).then((responseData) => {
    if (JSON.stringify(responseData.mobile_number) == (this.state.mobileNumber))
    {
      AsyncStorage.setItem(STORAGE_KEY, responseData.auth_token);
      console.log(AsyncStorage.getItem(STORAGE_KEY));
      this.props.navigator.push({id: 'Otp'})
    }
    else
    {
      Alert.alert("SignUp Failed","Mobile number already taken.")  
    }
  })
  .done();

BTW 在他们使用过的文档中等待。我尝试使用它,但页面未加载。此处附有屏幕截图。在此处输入图像描述

4

3 回答 3

19

使用异步/等待:

async _getStorageValue(){
  var value = await AsyncStorage.getItem('ITEM_NAME')
  return value
}
于 2016-09-03T20:55:45.047 回答
8

你必须打电话给

getUserToken().then(res => {
    console.log(res);
  });

因为这是一个异步调用。

于 2020-06-22T08:38:27.017 回答
0

这就是我通常设法从本地存储中获取价值的方式:

const getItemFromStorage = async () => {
  try {
       await AsyncStorage.getItem('ITEM_NAME', (error: any, result: any) => {
         if (result) {
           console.log(result);
         }else{
           console.log(JSON.stringfy(error));
         }
       });
     } catch (error) {
       console.log(error);
     }
}
于 2021-08-19T02:39:10.450 回答