2017-10-17 8 views
-1

私は反応アプリケーションで作業しています。レンダリング関数から関数を呼び出そうとしています。私が呼び出す関数は、getChildメソッドを使用します。 "未定義のgetChild"というプロパティを読み取ることができないというエラーが表示されます。レンダリングメソッドから呼び出さないとうまく動作します。未定義のプロパティ "getChild"を読み取ることができません

これは、機能とどのように私はプレイヤーがあなたがrender機能から物事を行うことになっていないcomponentDidMount

this.video = player = videojs(this.video_el, options).ready(function() { 
    self.player = this; 
    self.player.on('play', that.handlePlay); 
}); 
+0

プレーヤーの値は?あなたはそれをどこで定義しましたか? –

+0

'player.getChild(...)'は 'undefined'を返しますが、オブジェクトを返すはずです。 – Teemu

+0

@ishwarrimal私の更新を参照してください – ApurvG

答えて

1

にこのように定義され

handlePlay() { 
    //this.props.playButtonClickedActio 
    console.log("handle play ") 
    console.log("hii" + player.getChild('ControlBar').getChild('ProgressControl').currentWidth()) 
} 

render() { 
    if (this.props.sentance_selected_reducer.flag) { 
     this.handlePlay(); 
    } 

それを呼び出しています。一部のデータに基づいてコンテンツをレンダリングするのが目的です。

なぜなら、undefinedを返すのは、あなたがレンダリングメソッド内にいることです。したがって、基本的には何もレンダリングされません。プレイヤーは、レンダー機能が終了するまで存在しません。

代わりに、renderが終了するたびに呼び出されるcomponentDidMountメソッドで、このような処理を行う必要があります。

componentDidMount() { 
    if (this.props.sentance_selected_reducer.flag) { 
     this.handlePlay(); 
    } 
} 
+0

これは1回しか呼び出されませんか?行がクリックされ、flagがtrueに設定されるたびにこの関数を実行したい。 – ApurvG

+0

@ApurvGこれは、コンポーネントが再レンダリングするたびに呼び出される。基本的にすべてのレンダリングメソッドの後。これは 'render'メソッドで書くことと同じです。 –