2017-10-10 144 views
1

我正在使用第三方RN組件。
我使用該組件,如:當孩子(第三方)組件狀態改變時如何更新父組件

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

該組件允許我通過訪問數據:

this.comp.state.height 

這部分是我的組件的一部分,我的問題是
我需要採取一些行動當該第三方組件狀態改變時。
當它的狀態更新時,我的父組件無法檢測到此更改。
我該如何跟蹤這種變化(我無法更改第三方組件)?

+0

14,您使用的是哪個第三方組件?它是否有任何文檔化的道具,比如'onSomeValueUpdated',這樣當它的內部值(你有興趣跟蹤)發生變化時,它會調用'this.props.onSomeValueUpdated'? –

+0

我使用這個組件:https://github.com/archriss/react-native-display-html – 1110

回答

0

that component's props之一是onMessage,它是函數的類型。

假設是你要跟蹤的變化,你可以這樣做:

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

然後您的自定義組件的類內從你的渲染,第三方之一,包括這樣的功能:

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

是的,我看到了,但從某種原因onMessage從來沒有被調用。這就是爲什麼我問我是否可以檢測到它的狀態變化,因爲this.comp.state.height只是更新而已,onMessage永遠不會被調用。 – 1110

+0

'react-native-display-html'有它自己的[內部'onMessage'函數](https://github.com/archriss/react-native-display-html/blob/master/index.js#L152)當底層WebViewBridge組件調用它的onBridgeMes​​sage prop時被調用。如果在第一行添加'console.warn(JSON.stringify(event,null,2))'onMessage'?這樣,您可以確定是否存在具有錯誤的react-native-display-html或它使用的「react-native-webview-bridge」。 –

+0

我試圖記錄它,它從來沒有被調用 – 1110

相關問題