javascript - 无法访问对象数组中的元素
问题描述
我通过点击一个 API 来获取我的响应并将响应的每个元素(它是一个对象数组)推送到状态下的数组中,即 mydata
state={
mydata:[]
}
componentDidMount() {
const headers = {
"Content-Type": "application/json",
};
Axios.get("/getmeetings", {
headers
})
.then((res) => {
if (res.status === 200) {
console.log(res);
res.data.forEach((e, i) => {
this.state.mydata.push(e)
})
} else {
alert(res);
}
})
.catch((error) => console.log(error));
}
现在的问题是,当我尝试访问状态变量的长度时,它在0
我尝试打印数组时给出了它,我可以看到有可用的值。
我还检查了我的状态变量是否使用 chrome react 扩展正确填充。
现在另一件奇怪的事情是当我将另一个对象硬编码到mydata
变量中时
state= {
mydate = [{name:"temp"},{age:"1234"}]
}
然后再次将我的响应推送到该数组上,后来当我检查它的长度时,它给了我2
. 当我尝试打印该数组时,它会显示这 2 个对象以及我的其他推送对象。
这是我要推送的示例对象
{
"agenda": "sadsadasd",
"project": "ECAM",
"meeting_title": "asdasd",
"meeting_id": "1588072890",
"attendees": [
"a@#$$",
"a@a"
],
"date": "1588072890",
"host": "a@a"
}
解决方案
考虑避免直接推送,因为它会改变状态。改用setState
函数。
this.setState(({ myData }) => ({ myData: [...myData, res.data] }));
推荐阅读
- java - 包“com.example”从“javafx.base”和“javafx.base”中读取包“javafx.beans”
- postgresql - Postgresql 不使用 GIN 索引来表示“?” JSON 运算符
- java - 如何制作继承对象的数组 - Java
- c++ - 我应该如何将模板化函数存储在任何容器中?
- php - 将数组的值相加 N 次以达到目标
- c++ - OpenProcess() Access_Denied 与 SeDebugPrivilege
- php - 无法获取类别产品 Woocommerce
- python - format=None 在 Django rest full API 中有什么作用
- typescript - 我们如何将字符串数组映射到类型键的 TypeScript 类型映射?
- python - 如何获得同一天的两个条目之间的差异?