2017-06-29 2 views
1

ich diese Funktion von einem anderen Stackoverflow Thema kopiert (auf das Kind Methoden aufrufen außerhalb machen) und es funktionierte in einem kleinen Testprojektreactjs Objekt hat keine Schlüssel __reactInternalInstance

window.FindReact = function(dom) { 
    for (var key in dom) { 
    if (key.startsWith("__reactInternalInstance$")) { 
     var compInternals = dom[key]._currentElement; 
     var compWrapper = compInternals._owner; 
     var comp = compWrapper._instance; 
     return comp; 
    } 
    } 
    return null; 
}; 

ich eine Klasse gemacht, die eine messagebox zeigt in der Mitte des Bildschirms (Fade-in; show msg einige Sekunden; dann ausblenden)

und ich könnte die Methode aufrufen, um die Nachricht der untergeordneten Komponente direkt dank der obigen Funktion anzuzeigen. Also alles gut.

Dann kopierte ich dieses Objekt (messagebox) zu meinem Hauptprojekt und kopierte obige Funktion zum übergeordneten Objekt. Und wenn ich es nenne, kein Schlüssel ... auch nicht der Schlüssel, den ich suche

Ich listete die Schlüssel sowohl der Arbeit als auch des scheiternden Projekts. Alle Tasten sind die gleichen mit Ausnahme der ersten

key=__reactInternalInstance$bv23g7yipka 

Das Fail-Projekt arbeitet, keine Fehler, auch die Nachrichtenkomponente Werke (von innen rufen zeigen Nachricht)

(die in der Fail-Projekt fehlt)

Ich habe wirklich keine Ahnung, warum das fehlschlägt (Schlüssel fehlt), hoffe, dass einige von Ihnen tun.

Antwort

0

Ich überprüfte die package.js und bemerkte die verschiedenen Versionen aller Module. So aktualisiert sie (react/read-dom/webpack/babel-loader) und dann hat es funktioniert :)

Verwandte Themen