【发布时间】:2019-09-28 20:35:21
【问题描述】:
对不起,如果这是一个愚蠢/显而易见的问题,我是 Javascript/React 的新手。我正在尝试创建一个菜单,其中包含从 API 调用中获得的 JSON 对象。由于 JSON 数据是一堆嵌套对象(我说的是数百个对象),我想出了如何递归调用对象并使它们显示在无序列表中。我似乎无法弄清楚如何添加一个 onClick 函数,当单击该函数时,它将在嵌套对象中显示下一层。
我将提供一些屏幕截图,让您了解我拥有什么以及我想要实现什么。递归部分让我不知道如何让它工作。有人有想法吗?
class Menu extends React.Component {
state = {
categories: []
};
makeMenuLayer = layer => {
const layerKeys = Object.entries(layer).map(([key, value]) => (
<ul>
{key}
{this.makeMenuLayer(value)}
</ul>
));
return <div>{layerKeys}</div>;
};
componentDidMount() {
axios.get("https://www.ifixit.com/api/2.0/categories").then(response => {
this.setState({ categories: response.data });
});
}
render() {
const { categories } = this.state;
return <div>{this.makeMenuLayer(categories)}</div>;
}
}
这是当前代码显示的内容。我正在尝试使其仅显示第一层对象,然后单击每个元素时,将显示下一层。例如,如果我点击服装,它会显示配饰、服装、眼镜等,如果我点击配饰,它将显示领带和雨伞。
【问题讨论】:
标签: javascript json reactjs recursion