javascript - 异步存储检索项目中键的值

标签 javascript reactjs react-native asyncstorage

我是 Javascript 和 React Native 的新手,这个问题本身可能很容易回答。

我正在设置一个 AsyncStorage 并在存储中创建一个 Item,这是一个具有 3 个键值的 .JSON。

const saveDataToStorage = (token, userId, expirationDate) => { 
  AsyncStorage.setItem('userData', JSON.stringify({
    token: token, 
    userId: userId,
    expiryDate: expirationDate.toISOString()
  }))
};

我现在想做的是在项目的其他部分中从此项中检索“userId”值,但这就是问题所在。

var PersonalId = await AsyncStorage.getItem('userData');
console.log(PersonalId);
console.log(typeof PersonalId);

我知道如何访问该项目本身,但我不知道如何访问其中的特殊 key 。我无法使用该命令:

var PersonalId = await AsyncStorage.getItem('userData').userId;

因为 AsyncStorage 中的项目是一个字符串,所以我知道这一点是因为我从代码的第二行获取了此信息。

console.log(typeof PersonalId);

如何访问我的项目“userData”中的特殊键“userId”而不是整个项目本身?无论如何,我无法使用该项目,因为它是一个字符串,我不能将其视为一个对象,这就是我的问题。

感谢您的阅读和帮助!

最佳答案

您需要首先使用 JSON.parse() 将从 AsyncStorage 获取的值解析为 JSON 对象。尝试这个实现。

const get_data = async () => {
  const userData = await AsyncStorage.getItem("userData");
  const userObject = userData !== null ? JSON.parse(userData) : {};
  const personalId = userObject.userId;
  console.log(personalId);
};

关于javascript - 异步存储检索项目中键的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65798014/

相关文章:

javascript - 未捕获( promise 中)TypeError : this. state.[prop].map 不是函数

android - react-native 找不到android sdk

javascript - 对 iQuery 方法 .css() 使用多个值会抛出错误 : 'missing )' . 但是它不会丢失

javascript - 强制 safari 重新绘制 DOM

javascript - react : set all objects keys in state to false

javascript - Nextjs 中的样式组件延迟设置属性

react-native - 如何获取一个 zip 文件并解压到 ram 中 react native

android - react 原生 : Error "Unexpected identifier ' _classCallCheck'. 导入调用只需要一个参数”

javascript - 将动画函数作为参数传递

javascript - 模板内的 knockout 文本输入失去焦点