我正在尝试对对象执行一些逻辑。当我将对象打印到控制台console.log(question);
时,看到的对象如下:
[15:23:06] undefined
[15:23:06] Object {
[15:23:06] "id": "213a3e34-1a86-4ae5-bd7c-c882fd1684f8",
[15:23:06] "text": "What is 4+4",
[15:23:06] }
但是,我在实际引用这些值时遇到了麻烦。当我尝试question['text']
时遇到类型错误:
未定义不是对象(正在评估'question [“ text”]')
我看到控制台上正在记录一个未定义的消息,但无法理解它的来源。
请注意,我的对象是从对象数组中拉出的:
question = this.state.questions[1];
问题是从国家那里提出来的。
当我将this.state.questions
登录到控制台时,没有看到未定义的任何内容,而是在顶部添加了一个空数组:
[15:22:11] Array []
[15:22:11] Array [
[15:22:11] Object {
[15:22:11] "id": "407e7560-a0cd-4272-bafc-795f5e5787be",
[15:22:11] "text": "What is 2+4",
[15:22:11] },
[15:22:11] Object {
[15:22:11] "id": "213a3e34-1a86-4ae5-bd7c-c882fd1684f8",
[15:22:11] "text": "What is 4+4",
[15:22:11] },
[15:22:11] Object {
[15:22:11] "id": "9d38c759-6b64-4c1f-9e0e-d3b95a72b3a8",
[15:22:11] "text": "What is 1+2",
[15:22:11] },
[15:22:11] ]
这使我相信
答案 0 :(得分:1)
根据给定的信息,将在数据实际进入状态之前访问该属性。如果尚未事先加载数据,则尝试访问“ this.state.questions [1]”将给出不确定的信息(即使“ this.state.questions”为空数组)。
为避免这种情况,请确保正在使用此值的任何函数是:链接到正在获取数据的任何函数上的异步函数,或使用条件确保该值未定义。例如:
if(typeof this.state.questions[1] !== "undefined") {
//do something
}