Ich habe eine Anwendung, wo ich eine Ajax-Anfrage machen und dann die Daten durchlaufen und eine Liste von HTML-Komponenten erstellen. Was ich jetzt versuche, ist, ihnen OnClick- oder Ref-Werte zuzuweisen, aber ich bekomme den Fehler "Nur React-Besitzer können Refs haben".Reagieren auf Komponenten außerhalb der Renderfunktion
Hier ist ein Ausschnitt aus dem Code.
(Wenn die Ajax-Anforderung abgeschlossen nennt es Daten übertragen, Schleifen über die Daten und setzt dann den Zustand des dataHtml, die, wo meine Liste definiert wird angezeigt Ich möchte um auf die "MyComponent" -Komponenten zu verweisen, wenn ein Ereignis eintritt, aber wenn ich versuche, einen beliebigen Typ von ref oder onClick auf sie anzuwenden, funktioniert das nicht, weil sie nicht innerhalb der Renderfunktion sind. Wie kann ich auf diese Komponenten zugreifen, wenn dieses Ereignis eintritt? ?)
renderData(data)
{
var html = [];
for (var i = 0; i < data.length; i++) {
html.push(
<MyComponent key={ i } />
);
}
this.setState({
dataHtml: html
});
}
render() {
return (
<div ref="data">
{ this.state.dataHtml }
</div>
);
}
Ich bin über den Grund für den Fehler nicht sicher, aber warum nicht einfach die Komponenten in dem Render Renderfunktion stattdessen? Das Speichern von Komponenten in diesem Zustand ist weniger üblich. Normalerweise speichern Sie * Daten * im Status. –
@FelixKling Ich möchte das tun, aber der Grund, warum ich es so gemacht habe, war, weil ich das HTML aktualisieren wollte, wann immer ich eine AJAX-Anfrage machte, also dachte ich, die einzige Möglichkeit wäre, es in diesem Zustand zu speichern. Nähme ich mich den Dingen auf die falsche Art? – user1157885
Sie speichern nur die Ajax-Antwort in dem Zustand. Die Komponente wird neu gerendert, wenn sich der Status ändert. –