export const USER_KEY = "isLoggedIn";
export const phoneVerified = () => AsyncStorage.setItem(USER_KEY, 1);
export const userInfoVerified = () => AsyncStorage.setItem(USER_KEY, 2);
我已使用上述函数存储值,而下面的函数用于获取值。
export const isSignedIn = () => {
return new Promise((resolve, reject) => {
AsyncStorage.getItem(USER_KEY)
.then(res => {
console.log("from isSignedIn : "+res); //res is showing null.
if (res !== null) {
resolve(res);
} else {
resolve(0);
}
})
.catch(err => reject(err));
});
};
为什么这总是返回null?我正在尝试async / await但仍然是null。我想某些数据不会存储。
答案 0 :(得分:3)
我担心你只能存储字符串。请参阅此React Native AsyncStorage storing values other than strings和此https://facebook.github.io/react-native/docs/asyncstorage.html#setitem
感谢。
答案 1 :(得分:0)
正如@Vishu Bhardwaj所回答的那样AsyncStorage只接受字符串。因此,在这种情况下,您可以使用JSON.stringify()
和JSON.parse()
。
答案 2 :(得分:0)
这个愚蠢的问题困扰了我近一个星期,所有社区都没有建议其他方式为我工作,但是后来我发现一些东西是由react-native构建的,它的setState()回调函数是:{{ 3}}。 因此,我保证到目前为止唯一安全的方法是,在您的promise中使用setState()函数以及您需要运行的所有内容,将它们放在函数上,并为setState()回调调用它函数,这是您确保自己既不为空也不永远不调用函数的唯一途径。在这里,我将提供一个示例,其中this.tokeToServer()是我的函数,它用作回调函数。
try {
AsyncStorage.getItem('firebase_token',(err,item) => {
if (item) {
this.setState({
firebase_token: item,
}),this.tokenToServer();
}
});
} catch (error) {
console.log("Error retrieving data" + error);
}