React.js:为什么没有componentDidRender事件
React.js: Why is there no componentDidRender event?
我刚刚开始使用 React,有几次我心想:"为什么没有 componentDidRender 事件?"。
假设我有一个将表呈现给 DOM 的组件,我想在这个表上使用引导可排序,以允许用户对他想要的任何列进行排序。在可引导排序的情况下,您需要在绘制表后运行$.boostrapSortable()
以初始化插件。
在我看来,React 组件上有两个处理程序是合乎逻辑的,可以考虑用于此目的:
-
componentDidMount
:这不起作用,因为 DOM 在执行的这一点上似乎没有更新。 -
componentDidUpdate
:这可能有效,但不会在初始渲染时触发。
我并不是说 React 实际上缺少一个 componentDidRender 函数,因为我假设有一个完全合乎逻辑的解释来解释为什么它不存在。我只是问是否有人可以解释为什么不存在这样的函数,以及处理上述情况的"React 方式"是什么。
在componentDidMount
中,您可以执行以下操作: this.getDOMNode()
获取对该组件的底层 DOM 的引用。因此,如果您确实想将挂载的组件与 jQuery 一起使用,您可以执行以下操作:
componentDidMount: function() {
$(this.getDOMNode());
}
http://facebook.github.io/react/docs/working-with-the-browser.html
这是一个小提琴,它显示了jQuery在反应组件的DOM节点上起作用:
http://jsfiddle.net/sa5e88ys/1/
如您所见,它按预期向div 添加了边框。如果您仍然遇到问题,我想可能是您使用的插件而不是 jQuery 或反应?
虽然没有componentDidRender
,但你可以创建一个具有所需行为的方法,并在componentDidMount
(仅在第一次渲染后调用)和componentDidUpdate
(在每次渲染后调用,但第一次渲染后调用)中调用它。
此外,这是从组件中获取对 DOM 节点的引用的首选方法:https://facebook.github.io/react/docs/refs-and-the-dom.html
- 没有找到相关文章