获取未定义是不可迭代的(无法读取属性Symbol(Symbol.iterator))



通过编码学习React,这里我得到了这个错误(UnaughtTypeError:undefined不可迭代(无法读取属性Symbol(Symbol.iterator((,不知道问题出在哪里,有什么建议吗?

只需使用Effect激活setFilteredData,即可获得:`

{
links: [
{
color: 'red'
},
],
nodes: [
{
focused: focused
},
],
};
`

我想把数据改一点,就像我的逻辑一样,如果id匹配,颜色应该是灰色或红色,如果id的匹配,焦点也应该是焦点,英语不是我的母语,所以可能会出错。有什么想法吗?我希望我的问题是清楚的,如果需要添加一些内容或不清楚,请告诉我。

const [filteredData, setFilteredData] = useState();
const LINK_COLOR = "grey";
const LINK_FOCUS_COLOR = "red";
useEffect(() => {
const filterData = () => {

setFilteredData({ links: links, nodes: allNodes });

};
filterData() ;

}, [...]);



const focusLinkId = currentLink ? currentLink.id : "";
const focusNodeId = currentNode ? currentNode.id : "";
const graphData = {
...filteredData,
links: [
...filteredData?.links,
{
color: filteredData?.links?.map((l) => {
const color = l?.id === focusLinkId ? LINK_FOCUS_COLOR : LINK_COLOR;
return color;
}),
},
],
nodes: [
...filteredData?.nodes,
{
focused: filteredData?.nodes?.map((n) => {
const focused = n?.id === focusNodeId;
return focused;
}),
},
],
};

console.log("graphData:", graphData);

<Graph
id="graph-id"

data={graphData ? graphData : visualGraph.model}

/>

正如评论中所说,在返回响应之前,filteredDataundefined

这应该会有所帮助:

const graphData = filteredData && { /* ... */ }

相关内容

最新更新