2017-10-20 1 views
0

Ich Referenzierung die AmChart wie so:AmChart-Referenzattribut "Diagramm" nicht null beim Drucken des Referenzobjekts, aber beim Versuch, auf state.chart zuzugreifen, wird das Attribut "chart" null?

ref={(e) => {if (e) {this.ch = e}}} 

Wenn ich drucke this.ch in componentDidMount, ich kann sehen, dass das Attribut state vorhanden ist und das chart Attribut ist nicht null. Wenn ich jedoch versuche, auf this.ch.state.chart zuzugreifen, ist es null. Wenn ich this.ch.state sofort nach dem vorherigen Konsolenprotokoll drucke, das this.ch druckt, ist das chart Attribut dann null. Warum ist dieses Attribut nur Null, wenn ich versuche, darauf zuzugreifen, aber nicht, wenn ich this.ch drucke?

edit:

Screenshot of logs

+0

Wo machst du die console.logs? Poste diesen Code, damit wir das Problem sehen können. Ich habe keine Ahnung, was aufgrund deiner Beiträge passieren könnte. –

+0

Was redest du? 'state' existiert nicht in einem ref. Ein Verweis ist ein DOM-Element. –

+0

Konsolenprotokolle befinden sich in componentDidMount. console.log (this.ch) zeigt state.chart als NOT null an, während console.log (this.ch.state) chart als null anzeigt. Siehe Frage mit aktualisiertem Screenshot. – Biiiiiird

Antwort

0

Unabhängig davon, ob das obige Verfahren der richtige Weg ist chart zuzugreifen, können Sie stattdessen Ereignis-Listener auf amCharts verwenden, um das Diagramm zugreifen und Änderungen vornehmen. Fügen Sie unter "Optionen" im AmChart-Element-Tag einen Listener hinzu:

"listeners": [{ 
      "event": "rendered", 
      "method": (e)=>{e.chart.doSomething()}; 
      } 
    }] 
Verwandte Themen