2017-10-20 19 views
0

Je fais référence à la AmChart comme ceci:L'attribut de référence AmChart 'chart' n'est pas NULL lors de l'impression d'un objet de référence mais lors de la tentative d'accès à l'état.chart, l'attribut 'chart' devient NULL?

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

Lorsque j'imprime this.ch dans componentDidMount, je peux voir que l'attribut state est présent et l'attribut est chart NOT NULL. Cependant, quand j'essaie d'accéder à this.ch.state.chart c'est null. Lorsque j'imprime this.ch.state immédiatement après le journal de la console précédente qui imprime this.ch, l'attribut chart est alors null. Pourquoi cet attribut est-il seulement nul quand j'essaye d'y accéder, mais pas quand j'imprime this.ch?

modifier:

Screenshot of logs

+0

Où faites-vous les fichiers console.logs? Postez ce code afin que nous puissions voir le problème. Je n'ai aucune idée de ce qui pourrait arriver en fonction de ce que vous avez posté. –

+0

Que dites-vous? 'state' n'existera pas sur une ref. Un ref est un élément DOM. –

+0

Les journaux de console sont dans componentDidMount. console.log (this.ch) affichera state.chart comme NOT null, tandis que console.log (this.ch.state) montrera le diagramme comme nul. Voir la question avec une capture d'écran mise à jour. – Biiiiiird

Répondre

0

Si oui ou non la méthode ci-dessus est la bonne façon d'accéder chart, vous pouvez utiliser à la place des écouteurs d'événement sur AmCharts pour accéder au tableau et apporter des modifications. Sous 'options' dans la balise d'élément AmChart, ajoutez un écouteur:

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