javascript - 我不知道为什么我变得不确定。我怎样才能使这项工作?
问题描述
我正在寻找一个用户,当我找到它时,我想将其设置为配置状态。现在,当我在子数组中搜索时,我收到一个类型错误,提示“无法读取未定义的属性 'children'”。为什么会这样?我该如何解决?如果没有用户名,我可以设置配置状态。此外,如果我放置一个 console.log 或更改某些内容并保存,我注意到页面重新加载并且我的搜索对象已设置,即使之前有人说无法读取未定义的属性“孩子”。
这里是代码。
const [config, setConfig] = useState({});
const makeTree = (users) => {
let tree = {children:[]};
for (const person of users) {
if (!person.report) {
tree = { ...person, ...tree };
} else {
if (tree.name === person.report) {
tree.children.push(person);
} else {
tree.children?.forEach(child => {
if (child.name === person.report) {
child.children = [];
child.children.push(person)
}
})
}
}
}
return tree;
};
const searchInChildren = (children, name) => {
for (let i = 0; i<children.length; i++) {
if (children[i]?.name === name) {
setConfig(getConfig(children[i]));
}
else if (children[i] && children[i].children && children[i].children.length > 0) {
searchInChildren(children[i].children, name)
} else {
console.log("not found!")
}
}
};
useEffect(() => {
fetch("http://localhost:4000/schema")
.then((response) => response.json())
.then((data) => {
if (username) {
const treeObj = {...makeTree(data)};
console.log("tree", treeObj);
const regex = new RegExp(username, "gi");
for (let i = 0; i < data.length; i++) {
if (regex.test(data[i].name)) {
if (treeObj.name === data[i].name) {
setConfig(getConfig(treeObj))
} else {
console.log("treeObj.children",treeObj.children, data[i] );
searchInChildren(treeObj.children, data[i].name)
}
}
}
} else {
setConfig(getConfig(makeTree(data)));
}
if(deleteSearch){
console.log("hi",deleteSearch);
setConfig(getConfig(makeTree(data)));
}
});
}, [username, deleteSearch])
;
解决方案
推荐阅读
- php - “ns1”和“tns”标签之间的区别
- python - 在scrapy中使用meta传递数据
- excel - 根据单元格值移动形状
- androidx - androidx.work.impl.WorkManagerInitializer:java.lang.ClassNotFoundException:路径上的“androidx.work.impl.WorkManagerInitializer”:/data/app/app-2.apk
- node.js - 多个 2dsphere 索引,不确定在哪个上运行 geoNear
- machine-learning - 如何使用 cross_val_score 来拟合我的测试数据?
- javascript - 如何解决“找不到商店”的问题?
- python - 如何在 Python 3 中强制导入模块?
- php - 如果列是否在数据库中退出,我如何构建 if 语句(Laravel)
- python - 在一列中存储多个值