Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs React 0.13此.getDOMNode()等效于React.findDOMNode()_Reactjs - Fatal编程技术网

Reactjs React 0.13此.getDOMNode()等效于React.findDOMNode()

Reactjs React 0.13此.getDOMNode()等效于React.findDOMNode(),reactjs,Reactjs,这在React版本0.12中工作得非常好: componentDidMount: function () { var dom = this.getDOMNode(); } 变量dom获取渲染组件的实际dom节点。但是,将其转换为React 0.13并不能按预期工作: componentDidMount: function () { var dom = React.findDOMNode(); // dom is undefined } 我尝试了React.findDO

这在React版本0.12中工作得非常好:

componentDidMount: function () {
    var dom = this.getDOMNode();
}
变量
dom
获取渲染组件的实际dom节点。但是,将其转换为React 0.13并不能按预期工作:

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

我尝试了
React.findDOMNode(this)
,但也不起作用。基本上,我只是尝试在不使用ref的情况下获取由render函数呈现的顶级dom节点。这可能吗?

更新React v0.14+

在React v0.14+中,您现在应该使用模块:

ES6

类测试扩展了React.Component{
componentDidMount(){
const元素=ReactDOM.findDOMNode(this);
控制台日志(元素);
警报(要素);
}
render(){
返回(
测试
);
}
}
ReactDOM.render(,document.getElementById('r'))

注意,从React v0.14开始

React.findDOMNode
变为
ReactDom.findDOMNode(此)哪里

var ReactDom = require('react-dom');

React 15.0.1中所述,需要以下语法:
ReactDOM.findDOMNode

e、 g


对于更复杂的元素,如在标准DOM元素上创建的React组件
refs
只提供第一个DOM元素(组件的根元素),因此有时我们需要在其中找到所需的节点。很好的例子是材质Ui文本字段组件,以及我们如何从中获得价值

1.所需进口

import React, { Component } from 'react';
import TextField from 'material-ui/TextField';
import ReactDOM from 'react-dom';
2.虚拟dom和
ref=“variable”

或对于多行:

ReactDOM.findDOMNode(this.refs.title).querySelector("textarea").value

我们从
TextField
容器开始,使用标准的DOM查询
querySelector
获取所需的输入元素。此解决方案适用于任何复杂的组件,我们始终可以在其中进行查询。在React(15.3.2)上测试。

我认为您不需要使用
ReactDOM.findDOMNode
,您可以使用简单的
e.target.innerHTML
。在此选项中,您不需要导入
ReactDOM

import React, { Component } from 'react';
import TextField from 'material-ui/TextField';
import ReactDOM from 'react-dom';
 <TextField floatingLabelText="Some title" ref="title" />
ReactDOM.findDOMNode(this.refs.title).querySelector("input").value
ReactDOM.findDOMNode(this.refs.title).querySelector("textarea").value