React.js:为什么没有componentDidRender事件?

Knu*_*ius 5 javascript events dom reactjs

我刚刚开始使用React,有几次我对自己想:“为什么没有componentDidRender事件?”。

假设我有一个将表呈现给DOM的组件,并且我想在该表上使用bootstrap-sortable来允许用户对他想要的任何列进行排序。对于bootstrap-sortable,您需要$.boostrapSortable()在绘制表后运行,以初始化插件。

如我所见,React组件上有两个处理程序,出于这个目的考虑使用它们是合乎逻辑的:

  • componentDidMount:这不起作用,因为在执行的这一点上似乎没有更新DOM。

  • componentDidUpdate:这可能可行,但不会在初始渲染时触发。

我并不是说React实际上缺少componentDidRender函数,因为我认为关于为什么不存在它,这是一个非常合理的解释。我只是在问是否有人可以解释为什么没有这种功能,以及处理上述情况的“反应方式”是什么。

Col*_*say 4

您可以执行以下componentDidMount操作:this.getDOMNode()获取对该组件的底层 DOM 的引用。因此,如果您确实想将已安装的组件与 jQuery 一起使用,您可以执行以下操作:

componentDidMount: function() {
    $(this.getDOMNode());
}
Run Code Online (Sandbox Code Playgroud)

http://facebook.github.io/react/docs/working-with-the-browser.html

这是一个小提琴,显示了 jQuery 作用于 React 组件的 DOM 节点:

http://jsfiddle.net/sa5e88ys/1/

正如您所看到的,它按预期为 div 添加了边框。如果您仍然遇到问题,我想可能是您正在使用的插件而不是 jQuery 或 React 造成的?