【发布时间】:2020-02-24 01:40:04
【问题描述】:
我创建了一种在 AsyncStorage 中以我想要的方式存储数据的方法。这包括:
- 读取各种输入(各种数组)
- 将输入存储在包含多个数组的本地
this.state.object中 - 字符串化
this.state.object - 将字符串化对象存储在临时数组中
- 将包含所有对象的数组分配给另一个状态,
this.state.allObjects - 字符串化“this.state.allObjects”
- 在 AsyncStorage 中存储字符串化数组
所有这一切的最终目标是拥有一个对象数组,每个对象代表相同类型的一个非常不同的实例(具有不同的参数等)。这可能不是最优雅的方法,但它似乎可以很好地存储和加载。
当我尝试解析来自 this.state.allObjects[x] 的任何内容时,就会出现问题。或者更确切地说,它只发生在我需要在加载它之后访问它的情况下。
在我的loadFromAsync 函数中,我完全能够执行this.state.allObjects = JSON.parse(fromAsync); 来获取字符串化对象的数组,然后var display = JSON.parse(this.state.allObjects[0]).name 来检索数组的第一个解析对象的名称。
当我尝试调用var display = JSON.parse(this.state.allObjects[0]).name 或更简单的<Text>{JSON.parse(this.state.allObjects[0]).name}</Text> 时,在此函数之外的任何时间我都会收到以下错误:
- 运行时
const parse = JSON.parse(this.state.allObjects[0]);
//JSON Parse error: Unexpected identifier "undefined"
console.log(parse.name);
- 以及运行时
const parse = JSON.parse(this.state.allObjects[0]).name;
//JSON Parse error: Unexpected identifier "undefined" + null is not an object (evaluating 'JSON.parse(this.state.allObjects[0]).name
console.log(parse);
- 最后在跑步时
const parse = JSON.parse(this.state.allObjects);
//JSON Parse error: Unexpected EOF + JSON Parse error: Unexpected token ','
我假设 this.state.allObjects 在我的代码中的某处发生了变化,或者在某处附加了一个额外的},尽管它确实不应该。当我显示this.state.object 和this.state.allObjects[0] 时,它们的格式在视觉上完全相同。向this.state.allObjects 添加更多对象并显示每个字符串化组件也可以;这只是实际解析这些在原始加载函数之外不起作用的组件的问题。
我非常卡住。任何建议表示赞赏。如果我需要更改我的数据类型,那很好。用一个包含数组的字符串化对象组成的字符串化数组走到这一步,却无法解析它,这有点烦人。
【问题讨论】:
标签: javascript arrays json reactjs react-native