2016-07-12 7 views
0

반응 구성 요소 렌더링 후에 함수를 실행하려고합니다. 내가 document.getElementById("myId")React - 구성 요소가 업데이트 된 후 실제 DOM 요소를 가져 오는 방법

와 실제 DOM 요소를 얻을 필요가이 기능에서

render: function(){ 
    return(
     <div id="myId"></div> 
    ) 
} 

그래서 내가 componentDidUpdate 내 기능을 실행하려고하지만 분명히 "그린"브라우저 전에 실행 i'ts 내 사업부 나 '너무 점점 null이됩니다.

이 문제에 대한 우아한 해결책이 있습니까?

+0

나는 당신이 참조가 아닌 id를 통해 설명해야한다고 생각합니다. 예를 들어 [여기] (https://facebook.github.io/react/docs/more-about-refs.html) – KRONWALLED

+0

하지만 정말 ID를 사용해야합니다. 내가 질문을 단순화했다, 나는 jwplayer.setup (https://developer.jwplayer.com/jw-player/docs/developer-guide/api/javascript_api_reference/#setup)을 사용하고 있는데 document.getElementById를 사용한다. – 0xori

답변

1

componentDidUpdate 메서드가 호출 될 때 DOM 요소가 반드시 그려지지는 않는다는 가정하에 맞습니다.

window.requestAnimationFrame으로 건너 뛸 수 있습니다.

onNextFrame() { 
    var _this = this; 
    window.requestAnimationFrame(function() { 
    var domnode = _this.getDOMNode(); 
    if (domnode !== undefined) { 
     // set your attributes here 
     jwplayer(domnode).setup({ 
     "file": "http://example.com/myVideo.mp4", 
     "image": "http://example.com/myImage.png", 
     "height": 360, 
     "width": 640 
     }); 
    } 
    }); 
}, 
componentDidMount() { 
    this.onNextFrame(); 
}, 
componentDidUpdate() { 
    this.onNextFrame(); 
} 
+0

like 매력! – 0xori