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

React.js: Why is there no componentDidRender event?

本文关键字:componentDidRender 事件 为什么 js React      更新时间:2023-09-26

我刚刚开始使用 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

相关文章:
  • 没有找到相关文章