首页 > 解决方案 > AsyncStorage 在 React-Native 中有奇怪的字符

问题描述

我正在尝试使用 AsyncStorage 存储我的用户授权密钥,但每当我这样做时,我都会得到奇怪的字符。这是我的相关代码:

async function retrieveItem(key) {
    try {
        let retrievedItem =  await AsyncStorage.getItem(key).then(value => retrieveItem = value);
        return retrievedItem;
    } catch (error) {
        console.log(error.message);
    }   
    return
}

let test = retrieveItem('@authentication')

class AppNavigation extends Component {
    render() {
        console.log(test)
...

这是我得到的测试输出。我想要的物品在下面_55,我可以通过console.log(test._55). 我只是想确保我没有正确执行此操作。异步存储的密钥总是 _55 吗?

{"_40": 0, "_55": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1ZTk1ODM3NDJlZDI1YjAxMWM4MWFiNWEiLCJpYXQiOjE1ODY4NTY4MjB9.yK0WYuZj7_2Nih7phisi5rmm0y7gF__PMRMEAafIkFk", "_65": 1, "_72": null}

标签: react-nativeasyncstorage

解决方案


您应该注意将 async/await 和 .then 一起使用,它们都做同样的事情。试试这个代码:

async function retrieveItem(key) {
    try {
        let retrievedItem =  await AsyncStorage.getItem(key);
        return retrievedItem;
    } catch (error) {
        console.log(error.message);
    }   
    return
}

let test = await retrieveItem('@authentication')

class AppNavigation extends Component {
    render() {
        console.log(test)

编辑:你得到的对象是一个承诺,你可以通过执行 async/await 语法或调用 .then(...)


推荐阅读