这在React版本0.12中运行得非常好:

componentDidMount: function () {
    var dom = this.getDOMNode();
}

变量dom获取渲染组件的实际DOM node .但是,将其转换为React 0.13并不能像预期的那样工作:

componentDidMount: function () {
    var dom = React.findDOMNode();
    // dom is undefined
}

我试了React.findDOMNode(this)次,但也没用.基本上,我只是try 在不使用ref的情况下获取渲染函数渲染的顶级dom node .这可能吗?

推荐答案

Update React v0.14+

在react v0中.14+this has changed,您现在应该使用react-dom模块:

import ReactDOM from 'react-dom';

ReactDOM.findDOMNode(this);

ES6

class Test extends React.Component {
  componentDidMount() {
    const element = ReactDOM.findDOMNode(this);
    console.log(element);
    alert(element);
  }
  
  render() {
    return (
      <div>test</div>
    );
  }
}

ReactDOM.render(<Test />, document.getElementById('r'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.js"></script>
<div id="r" />

ES5

var Test = React.createClass({
  componentDidMount: function() {
    var dom = ReactDOM.findDOMNode(this);
    console.log(dom);
    alert(dom);
  },
  render: function() {
    return React.createElement('div', null, 'test');
  }
});

ReactDOM.render(React.createElement(Test), document.getElementById('r'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.js"></script>
<div id="r" />


React v0.13 and below

将其作为参数传递肯定会起作用:

React.findDOMNode(this);

如果不是这样的话,可能还会发生其他事情.请参见下面的演示:

var Test = React.createClass({
  componentDidMount: function() {
    var dom = React.findDOMNode(this);
    console.log(dom);
    alert(dom);
  },
  render: function() {
    return React.DOM.div(null, 'test');
  }
});

React.render(React.createElement(Test), document.getElementById('r'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.13.1/react.js"></script>
<div id="r"></div>

Reactjs相关问答推荐

Reactjs中的chartjs和reaction-chartjs-2的问题

在Reaction常量函数中未更新状态变量

需要特定的数学函数来标准化动画持续时间

在每页上应用字体-NextJS

为什么我得不到我想要的数据?

当我无法引用模态组件时,如何使模态组件在 Next.js/React 中管理自己的状态?

从 MongoDB createAt 字段中分割精确时间

如何在PrimeReact的表格中修改筛选图标功能

如何在 React.js 中提取 PDF 的内容?

根据其中的值不同地react setState 更新状态

在 Nextjs13 应用程序目录中呈现从 supabase 获取的数据

类型错误:类型typeof import(js-cookie)上不存在属性get

Cypress - 替换 React 项目中的变量

如何从一组对象映射 MUI 5 图标并更改其 colored颜色 ?

react-query、react-hook-form 和表单验证

npm init vite@latest 和 npm init vite 有什么区别?

axios post方法中的请求失败,状态码为500错误

由于另一个子组件,如何在react 中渲染另一个子组件

React中`onScroll`和`onScrollCapture`之间的区别?

错误(未捕获的类型错误):无法读取未定义的属性(读取参数)