为什么children.length导致未处理拒绝(TypeError):无法读取未定义的属性(读取'length'),特别是因为children.length的值已成功地显示在控制台上?
const getParentId = (childId) => {
var queue = [ds]
while(queue.length > 0){
const children = queue[0].children
queue.push(children)
console.log("children.length = "+children.length)
for (let i = 0; i < children.length; i++){
if (children[i].id === childId) {return queue[0].id}
}
queue.shift()
}
}
const addSiblingNodes = async () => {
const child = [...selectedNodes][0]
const childId = child.id
const newNodes = getNewNodes()
await dsDigger.addSiblings(childId, newNodes);
setDS({ ...dsDigger.ds });
console.log("the parent of "+childId +" is "+ getParentId(childId))
};
while
循环在queue
中的一个条目没有子
属性之后继续循环--代码实际上将undefined
推送到queue
上。当它在下一行报告undefined
的长度时,它会抛出导致拒绝promise的错误。
如果我错了,请纠正我,但如果说没有子
数组具有子
属性,因为只有子
节点具有子
属性,这难道不是真的吗?如果确实如此,则错误将在while
循环的第二次迭代中出现。
我建议检查getParentID
的设计,因为它似乎试图从ds
节点开始对最大的子分支进行分支遍历,而且可能应该对所有子分支进行树遍历。
我知道在这个问题上有很多答案,比如这个。我确实在组件构造函数中添加了。我还尝试了胖箭头方法(),但是当我单击时,仍然会显示此错误:
我有一个简单的代码,但我收到(有时)错误的结果,这是因为nodejsasync,我知道。最后,我需要更新“this.setState({active:options})”。因此,为了解决NodeJS的异步问题,我使用了require(“异步”)库。但是现在我的简单代码变得相当复杂,结果也不是100%好。 同样在“函数道路”上,当我使用“this.setState({actove:options})
我试图获取一个基于的计数,该计数等于 但当我改变它的时候 它按预期工作,但是它需要是动态的。 这是减速器 postlist.js
如果函数在组件中,那么一切都很好。如果我把它单独取出并导出到一个组件中,那么我会得到一个错误TypeError:不能读取未定义的属性(读取'reduce')
TypeError:无法读取未定义的属性(读取“to isoString”)
问题内容: 我试图在ajax回调从REST api接收数据后设置组件的setState。这是我的组件构造函数代码 然后,我有一个如下所示的方法。 现在,这是我执行getAJAX请求的getPosts函数。 我想设置状态,但出现以下错误。 不太清楚是什么原因造成的。如果有人指出我正确的方向,那将真的很有帮助。提前致谢。 问题答案: 还绑定回调函数,以便回调内部指向React Component的上下