【发布时间】:2021-02-05 18:32:03
【问题描述】:
我有一个 React 状态,它是一个对象数组,我正在 setState 方法中向它添加一个对象。对象添加正确。
现在当我尝试在其他函数中访问对象时,我无法访问对象的属性。我可以在控制台上看到该对象与属性一起存在。我在 stackoverflow 上查看了其他与异步调用相关的类似问题,但我的不属于该范围。
我已经创建了这样的对象数组,
interface ResultState{
....
localArray : object[];
}
在构造函数中将其初始化为 null。
然后向它添加一个对象,例如,
localArray : this.state.localArray.concat(Items1)
我的控制台输出:
localArray -> [{}]
0:
name: 'abcd'
roll_num: 10
address: [{...}]
0: {Street: 'abcdefgh', aptnum: 1}
现在我想访问对象的地址。 我的代码是这样的,
const resultObject = this.state.localArray[0];
return resultObject.address;
但是我得到一个错误属性地址不存在于类型对象上。
当我执行 console.log(typeof(resultObject)) 时,出现对象。
这可能是什么原因?
【问题讨论】:
-
JSON.stringify(this.state.localArray[0])的输出是什么?我不确定,但我认为某些浏览器会记录对对象的引用,因此当对象在记录后被修改时,它也会修改记录的值 -
输出是这样的,{"name":"abcd","roll_num":10,"address":"..."}
-
只是为了确定:这会在分配
resultObject之前被记录下来?和JSON.stringify(resultObject)的日志记录一样? -
是的,两者都是。我在assigng resultObject之前记录它,resultObject的stringify也是一样的。
-
对于
localArray: object[],您实际上使用的是“对象”类型吗?确保任何类型的对象都定义了地址字段。如果您没有类型,请尝试localArray: any[]
标签: reactjs typescript