2017-10-10 124 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

相关问题