2017-10-10 24 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)} 
    ... 

をそして、あなたはそのサードパーティの1をレンダリングしている、そこからカスタムコンポーネントのクラスの中には、この機能が含まれています。

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を呼び出すときに呼び出されます。最初の行として 'onMessage'の中に' console.warn(JSON.stringify(event、null、2)) 'を追加するとどうなりますか?そうすれば、バグのある 'react-native-display-html'かそれが使う' react-native-webview-bridge'かどうかを判断できます。 –

+0

私はそれを記録しようとしましたが、それは決して呼ばれません – 1110

関連する問題