React.js:findDOMNode和getDOMNode之间的区别

时间:2015-05-12 12:15:36

标签: reactjs

有人可以告诉我

之间有什么区别
React.findDOMNode(this.refs.email).value

this.refs.email.getDOMNode().value

他们正在做同样的事情 - 获取元素的价值,但我应该在哪里使用哪一个。

2 个答案:

答案 0 :(得分:37)

自React 0.13起,

component.getDOMNode()已被弃用:

  

添加了新的顶级API React.findDOMNode(component),应该是   用来代替component.getDOMNode()。基于ES6的基类   组件不会有getDOMNode。此更改将启用更多功能   前进的模式。

通过http://facebook.github.io/react/blog/2015/03/10/react-v0.13.html#new-features

它很可能会在React的未来版本中删除(但请不要引用我,因为我无法找到一个好的参考)。

编辑:更新以反映React 0.14

getDOMNode()在0.13和0.14中发出警告,并将在0.15中完全删除:

  

对于每个返回的DOM节点,我们已经向后添加了getDOMNode方法   兼容性将在0.15之前发出警告。

通过https://facebook.github.io/react/blog/2015/10/07/react-v0.14.html#new-deprecations-introduced-with-a-warning

另请注意,从0.14开始,React DOM组件不再需要调用findDOMNodegetDOMNode

  

我们在此版本中进行的另一项重大更改是将DOM组件作为DOM节点本身公开。这意味着:我们通过参考React DOM组件来了解你可以做些什么,并意识到你可以用它做的唯一有用的事情就是调用this.refs.giraffe.getDOMNode()来获取底层的DOM节点。从此版本开始,this.refs.giraffe 实际的DOM节点。 请注意,对自定义(用户定义)组件的引用与以前完全相同;只有内置的DOM组件才会受到此更改的影响。

通过https://facebook.github.io/react/blog/2015/10/07/react-v0.14.html#dom-node-refs

GitHub上React repo的相关代码和提交:

答案 1 :(得分:1)

第二个是用于访问refs DOM节点的旧API,第一个是新方法。因此,如果您使用最新版本的React,则应使用第一个版本。