2017-10-17 5 views
-1

나는 반응하는 응용 프로그램을 만들고 있습니다. 내 렌더링 함수에서 함수를 호출하려고합니다. 내가 호출하는 함수는 getChild 메서드를 사용합니다. "정의되지 않은"getChild "속성을 읽을 수 없습니다"라는 오류가 나타납니다. 렌더링 메서드에서 호출하지 않으면 제대로 작동합니다. 내가정의되지 않은 "getChild"속성을 읽을 수 없습니다.

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(); 
    } 

플레이어가 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

에 다음과 같이 정의된다 당신은 render 함수에서 일을 안하고 그것을 호출 오전 방법

는 기능입니다. 일부 데이터를 기반으로 콘텐츠를 렌더링하는 것이 목적입니다.

undefined를 반환하는 이유는 사용자가 render 메서드 내에 있다는 것이므로 기본적으로 아직 렌더링되지 않은 것입니다. 렌더 함수가 끝날 때까지 플레이어가 존재하지 않습니다.

대신 메서드에서 다음과 같이 처리해야합니다. render이 완료 될 때마다 호출됩니다.

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

이것은 한 번만 호출 할 것인가? 행을 클릭하고 플래그를 true로 설정할 때마다이 함수를 실행하려고합니다. – ApurvG

+0

@ApurvG 이것은 구성 요소가 다시 렌더링 될 때마다 호출됩니다. 기본적으로 모든 렌더링 방법 후에. 'render' 메소드에 쓰는 것과 같습니다. –

관련 문제