在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
+中,这已经更改,您现在应该使用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及以下
将此作为参数传递肯定可以工作:
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>
问题内容: 在PHP中可以做到。在JavaScript中,您通常会使用相同的方法,但这并不完全相同。如果确实存在,但条件是或(或可能还有其他值),则条件也将评估为false 。 JavaScript 中PHP的完美替代品是什么? 从更广泛的意义上讲,有关JavaScript处理不存在的变量,没有值的变量等的通用完整指南会很方便。 问题答案: 我通常使用运算符: 如果该属性不存在或其值是,它将返回。
问题内容: 我正在寻找一种等效于C / PHP 或C#/ Java程序员(适用于.NET)的JavaScript 。 我的基本要求是现在使用数字的千位分隔符格式,但是可以处理很多组合(包括日期)的东西会很好。 我意识到Microsoft的Ajax库提供了的版本,但我们不希望该框架的全部开销。 问题答案: 从ES6开始,您可以使用模板字符串: 除此以外: 尝试sprintf()for JavaScr
问题内容: 我在Windows Server 2008上使用SQL Server 2008 Enterprise。我想从前11位到前20位选择结果(例如,我只对第11位到第20位结果感兴趣)。任何想法如何有效地在tsql中编写此查询? 在此先感谢,乔治 问题答案: 不幸的是,SQL Server没有提供类似于MySQL语法的任何东西。但是,您可能想要尝试使用派生表,如下所示:
问题内容: 这是执行字符串替换的两种方法: 如何使用Java做与第一种方法类似的操作? 问题答案: 或更短:
问题内容: 我需要能够生成运行查询,该查询将返回下表中的ID的下一个值: 在Oracle中,您可以在序列上调用NEXTVAL,它为您提供下一个序列(注意:不必在表上进行插入)。 谷歌搜索后,我发现您可以使用以下查询找到auto_increment的当前值: 问题是我希望每次查询该值时该值都增加。在Oracle中,当您调用nextval时,即使不将行插入表中,序列的值也会增加。 有什么方法可以修改上
问题内容: 实现与Java等效的C ++的首选方法是什么? 问题答案: 尝试使用: 这要求你的编译器启用rtti支持。 编辑:我对这个答案有很好的评论! 每次需要使用dynamic_cast(或instanceof)时,最好问问自己是否必要。通常,这是不良设计的标志。 典型的解决方法是将要检查的类的特殊行为放入基类的虚函数中,或者引入诸如访问者之类的东西,你可以在不更改接口的情况下为子类引入特定行