EDIT v2: Ihre Dateneingabe ist interessanterweise organisiert, wenn Sie diesen Eingang von einer höheren Ebene erstellen, es effizient sein kann, neu zu organisieren, wie es jedoch zusammengesetzt ist, die Elemente aus dem Datenarray dekonstruieren macht es einfacher, in den folgenden Funktionen aufrufen:
// Take out the name array and xlinkHref from data
let {xlinkHref, name} = this.props.data[0];
let list = name[0].map((name, i) => {
return (
<div key={'sidebar_'+i}>
<svg className="sidebar-icon">
<use xlinkHref={xlinkHref}></use>
</svg>
<div className="public-folders">{name}</div>
</div>
);
});
Original-Antwort ohne Daten Beispiel:
Ein Teil des internen diffing Algorithmus Reagieren Listen von generierten Objekten erfordert identifie zu sein d mit einer eindeutigen "Schlüssel" -Eigenschaft. Sie müssen diese Eigenschaft dem Wrapping-Div jedes Iterators hinzufügen.
So können Sie innerhalb der Map-Funktion den Parameter für den Index der Karte verfolgen und diese verwenden, um die Schlüssel Ihrer Liste getrennt zu halten.
Es gibt eine gute Erklärung dafür hier im Abschnitt Dynamische Kinder: https://facebook.github.io/react/docs/multiple-components.html
Hier ist, was Ihr Code aussehen könnte:
class SidebarPrivateFolders extends React.Component {
constructor(props) {
super(props)
}
render() {
let list = this.props.data.map((currentObj, i) => {
return (
<div key={'sidebarlist_'+i}>
<svg className="sidebar-icon">
<use xlinkHref={currentObj.xlinkHref}></use>
</svg>
<div className="public-folders">{currentObj.name}</div>
</div>
);
});
return (
<div className="sidebar-section">
<div className="sidebar-section-wrapper">
{list}
</div>
</div>
);
}
}
Lassen Sie mich wissen, ob dies Ihr Problem behebt.
können Sie eine Beispieldaten von 'this.props.data' posten –
Hilft das? – u111937
es tut .. Daten ist ein Array mit nur einem Element ... vielleicht wollen Sie 'data [0] .name [0] .map (fn)' – azium