2016-07-12 4 views
0

私は、コンポーネントをレンダリングした後に関数を実行しようとしています。私はdocument.getElementById("myId")React - コンポーネントが更新された後に実際のDOM要素を取得する方法

と実際のDOM要素を取得する必要があります。この機能で

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

だから私はcomponentDidUpdateで私の関数を実行しようとしたが、どうやら、ブラウザの前に実行されているi'ts私は「ので、私のdiv要素を「塗装」得点はnullです。

この問題の解決策はありますか?

+0

私はあなたが参照ではなくIDで対処する必要があると思います。たとえば、[here](https://facebook.github.io/react/docs/more-about-refs.html)のように見てください。 – KRONWALLED

+0

が本当に必要です。私は質問を簡素化していた、私は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

のように働いた魅力! – 0xori

関連する問題