2017-10-10 2 views
1

Ich verwende die RN-Komponente von Drittanbietern.
Ich benutze diese Komponente wie:So aktualisieren Sie die übergeordnete Komponente, wenn der Status der untergeordneten Komponente (Drittanbieter) geändert wird

<Component ref={comp => (this.comp = comp)} ... 

Diese Komponente erlauben Sie mir über den Zugriff auf Daten:

this.comp.state.height 

Diese Komponente Teil meiner Komponente ist und mein Problem ist
Ich brauche einige Maßnahmen zu ergreifen wenn dieser Drittkomponentenstatus geändert wird.
Wenn der Status aktualisiert wird, kann meine übergeordnete Komponente diese Änderung nicht erkennen.
Wie kann ich diese Änderung verfolgen (ich kann die Komponente von Drittanbietern nicht ändern)?

+0

14, welche Komponente von Drittanbietern verwenden Sie? Hat es irgendwelche dokumentierten Requisiten wie 'onSomeValueUpdated', so dass, wenn sich sein interner Wert (der für das Tracking interessant ist),' this.props.onSomeValueUpdated'? –

+0

Ich verwende diese Komponente: https://github.com/archriss/react-native-display-html – 1110

Antwort

0

Einer der that component's props ist onMessage, die vom Typ Funktion ist.

Unter der Annahme, dass sich die Änderung, die Sie verfolgen möchten, können tun Sie so etwas wie:

<Component 
    ref={comp => (this.comp = comp)} 
    onMessage={this.onMessage.bind(this)} 
    ... 

Und dann in Ihrer Klasse individuelle Komponente, aus denen Sie machen, dass 3rd-Party ein, schließen Sie diese Funktion:

onMessage(data) { 
    // data here is what was sent from window.WebViewBridge.send 
} 
+0

Ja, ich sah das, aber aus irgendeinem Grund onMessage wird nie aufgerufen. Deshalb habe ich gefragt, ob ich irgendwie feststellen kann, dass es sich um eine Statusänderung handelt, da this.comp.state.height aktualisiert wird, nur dass onMessage nie aufgerufen wird. – 1110

+0

'reactive-native-display-html' hat eine eigene [interne' onMessage'-Funktion] (https://github.com/archriss/react-native-display-html/blob/master/index.js#L152) Wird aufgerufen, wenn die zugrunde liegende 'WebViewBridge'-Komponente ihre 'onBridgeMessage'-Props aufruft. Was passiert, wenn Sie "console.warn" (JSON.stringify (event, null, 2)) 'in' onMessage' als erste Zeile hinzufügen? Auf diese Weise können Sie feststellen, ob "reactive-native-display-html" mit einem Fehler oder die "reactive-native-webview-bridge" verwendet wird. –

+0

Ich habe versucht, es zu loggen, und es heißt nie – 1110

Verwandte Themen