I have the following code which basically collapses all the submenu and only opens them when clicked:
<ul class="menu">
<li>
<a href="#">One</a>
<ul class="menu">
<li>
<a href="#">Alpha</a>
<ul class="menu">
<li><a href="#">Hello</a></li>
<li><a href="#">World</a></li>
...
<li><a href="#">Beta</a></li>
</ul>
</li>
<li><a href="#">Three</a></li>
</ul>
<script type="text/javascript">
$(".menu").children().click(function(e) {
$(this).siblings().find("ul").hide();
$(this).children().show();
});
</script>
I have used recursive function to create a menu with submenu API with DRF, and have successfully managed to display a menu from that API with the following code:
class Recursive extends React.Component {
render() {
let childitems = null;
if (this.props.children) {
childitems = this.props.children.map(function(childitem) {
return (
<Recursive item={childitem} children={childitem.children} />
)
})
}
return (
<li key={this.props.item.id}>
{this.props.item.name}
{ childitems ? <ul>{childitems}</ul> : null }
</li>
);
}
}
class MenuDisplay extends React.Component {
render() {
let items = this.props.data.map(function(item) {
return (
<Recursive item={item} children={item.children} />
)
})
return (
<ul>
{items}
</ul>
);
}
}
How can I refactor my React code to include the function I have created with jQuery in the first example?
Here's the JSfiddle for the HTML.