Ich versuche rekursiv JSON-Daten mit React in geschachtelte Liste zu rendern. Im Moment bin ich mit einfachen Datenobjekt wie folgt aus:Verschachtelte React-Liste funktioniert nicht
[{"id": "1",
"name": "Luke"
},
{"id": "2",
"name": "Jim",
"childNodes":[{
"id": "3",
"name": "Lola"
}]
}]
mit dieser Klasse:
export default class NestedList extends Component {
constructor(props) {
super(props);
this.state = {
visible: true
};
}
toggle =() => {
this.setState({ visible: !this.state.visible });
};
renderChild = (child) => {
if (child.childNodes) {
return (
<ul>
{child.myData.map(item => {
return this.renderChild(item);
})}
</ul>
);
}
else if (child.name) {
return <input type="checkbox"><Child name={child.name}/></input>;
}
return null;
}
render() {
return (
<aside>
<div>
<h4>Data Sets</h4>
<ul>
{this.renderChild(this.props.myData)}
</ul>
</div>
</aside>
);
}
}
, die eine Kinderklasse aufruft, das Listenelement erstellt:
export default class Child extends Component {
render() {
let {name}=this.props;
return (
<li>{name}</li>
);
}
}
aber es doesn‘ t nichts drucken. Ich habe versucht, das Attribut childNodes
insgesamt zu entfernen und habe versucht, die Liste zu drucken, aber es funktioniert immer noch nicht. Ich verstehe nicht, wo ich falsch liege. Ich würde etwas Hilfe schätzen, wie man das repariert.
ich den ersten Ansatz versucht, und ich diesen Fehler: 'Kann nicht Eigentum 'childnodes' lesen von undefined – user8907896
@ user8907896 Also für den zweiten Ansatz gehen :) – mersocarlin
@ user8907896 ist es eigentlich einfacher zu verstehen. – mersocarlin