reactjs - 无法访问 ReactJS 中的嵌套状态对象
问题描述
我正在尝试访问 ReactJS 中的嵌套对象。这是对象的样子:
const characteristics = [
{ id: "geo", content: 'Geopolitical' },
{ id: "dog", content: 'Dog Loving' },
];
const starterColumns = {
"1": {
name: 'I am',
items: characteristics
},
"2": {
name: 'fullstack developer',
items: []
}
}
const [columns, setColumns] = useState(starterColumns);
这是我尝试时遇到的错误console.log(columns['2']['items']['0']['id'])
:
TypeError: Cannot read property 'id' of undefined
这是否与我正在使用有状态变量的事实有关?嵌套对象有什么奇怪的地方吗?谢谢您的帮助!
编辑
问题是列中没有对象,所以我没有对象可以访问。现在突出的问题是如何在不显示新的拖放块的情况下填充该空白。感谢您的帮助!
编辑
我使用try/catch
语句来检查对象,因此如果它为空,则不会发生任何事情。
解决方案
仅对无法处理的错误使用 try catch
要访问元素,请尽可能使用点符号,而不是使用括号符号 []
当您无法访问 id 的项目中有一个空数组时,您将收到错误,因此解决方案是检查数组是否为空
columns['2'].items.length > 0
要访问数组的第一个元素,您必须使用 [0] 而不是 ['0']
试试这个解决方案
if (columns['2'].items.length > 0) {
console.log(columns['2'].items[0].id)
}
推荐阅读
- webpack - Webpack 开发服务器在 css 更改时慢编译顺风
- c++11 - 将 GstVideoFrame 转换为 GstBuffer | 流媒体
- r - R. 根据条件改变新变量
- python - 根据 df2 中的查询比较 2 个 dfs 并在 df1 中附加值
- pytorch - 这两个用于推理的代码与玩具 MNIST 示例有什么区别
- c# - 使用 WebApi 在 Azure DevOps 中创建项目
- c - 使用共享库并不总是比使用静态库更好吗?
- c# - 如何在 Windows 服务 C# 中基于特定时间运行多个功能?
- c - 使用 MQTT paho 异步发布触发新消息回调
- asp.net-mvc - 如何将图像从视图发送和显示到控制器?