React - 如何在组件更新后获得真正的 DOM 元素

React - how to get real DOM element after component is updated

我正在尝试 运行 在 React 组件渲染后的一个函数。

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

在这个函数中,我需要用 document.getElementById("myId")

得到一个真正的 DOM 元素

所以我尝试 运行 我在 componentDidUpdate 中的功能,但显然我 运行 在浏览器 "painted" 我的 div 之前 div 所以我'我得到 null.

这个问题有没有优雅的解决方案?

您的假设是正确的,即调用 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();
}