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

Ste*_*rov 30 reactjs

有人能告诉我它们之间有什么区别

React.findDOMNode(this.refs.email).value
Run Code Online (Sandbox Code Playgroud)

this.refs.email.getDOMNode().value
Run Code Online (Sandbox Code Playgroud)

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

pet*_*mag 37

component.getDOMNode() 自React 0.13起不推荐使用:

添加了新的顶级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开始调用findDOMNodegetDOMNode不再需要React DOM组件:

我们在此版本中进行的另一项重大更改是将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的相关代码和提交: