异步存储返回空值

时间:2017-11-16 05:44:37

标签: reactjs react-native asyncstorage

我正在异步存储中保存一个值本机响应。但是当我尝试获取值时,它返回null。以下是我的代码。任何帮助,将不胜感激。在控制台中打印的值很好,但异步存储返回null。

 var userID = responseJson[0].UserId;
 console.log("User id"+userID +userID.toString())
 AsyncStorage.setItem("UserId",userID.toString());              
 AsyncStorage.getItem("UserId", (UserId) => {
   console.log("get user details"+UserId )
 });

2 个答案:

答案 0 :(得分:0)

据我所知,它是Async方法,所以在保存之后你就无法正确使用它。 你必须在回调函数中得到它。请参阅以下代码段:

AsyncStorage.setItem('UID123', JSON.stringify(UID123_object), () => {
  AsyncStorage.mergeItem('UID123', JSON.stringify(UID123_delta), () => {
    AsyncStorage.getItem('UID123', (err, result) => {
      console.log(result);
    });
  });
});

Snippet source

在您的示例中,它将是:

 var userID = responseJson[0].UserId;
            console.log("User id"+userID +userID.toString())
            AsyncStorage.setItem("UserId",userID.toString(), () => {
               AsyncStorage.getItem("UserId", (UserId) => {
                    console.log("get user details"+UserId )}
            });              

答案 1 :(得分:0)

Asyncstorage中的数据应以字符串格式存储。你可以这样做:

var userID = responseJson[0].UserId;
        console.log("User id"+userID +userID.toString())
        AsyncStorage.setItem("UserId",JSON.stringify(userID));              
        AsyncStorage.getItem("UserId", (err, result) => {
          console.log("get user details"+ result)}

请注意,结果(数据)仅为字符串格式(无论其是变量还是对象)。要将其用作对象,您需要将其解析为对象。 你可以使用 JSON.parse(结果)

来做到这一点