出于某种原因,我无法使用React.findDOMNode函数。浏览器抱怨类型错误,说React.findDOMNode不是一个函数。这是发生这种情况的代码:
var React = require('react');
var Backbone = require('backbone');
var Car = require('models/car');
var NewCarForm = React.createClass({
handleSubmit: function(e) {
e.preventDefault();
var brand = React.findDOMNode(this.refs.brand).value.trim();
...
this.props.handleNewCar(new Car({brand: brand, model:model, name:name, kmTraveled:odometer, litresSpent:litres}));
return;
},
render: function() {
console.log("Inside NewCarForm");
return (
<form className="contentSection" onSubmit={this.handleSubmit}>
<input type="text" placeholder="Car Brand" ref="brand" />
...
<input type="submit" value="Post" />
</form>
);
}
});
module.exports = NewCarForm;
&#13;
这是我尝试使用此功能的唯一模块。 React的其余部分工作正常,所以我不知道这里可能出现什么问题。
答案 0 :(得分:39)
在React 15中(可能还有一些早期版本,我不确定)你根本不需要findDOMNode
来使用引用:
this.refs.brand.value
就足够了。
答案 1 :(得分:14)
React.findDOMNode(component)
中引入了 0.13.0
作为component.getDOMNode()
的替代。
确保已安装React 0.13.1
。如果您正在使用npm,则可以运行npm view react version
来检查当前安装的React版本。
答案 2 :(得分:5)
findDOMNode
方法已从react
模块移至react-dom
模块。
因此您已导入或需要react-dom
模块中的ReactDOM,然后替换
var brand = React.findDOMNode(this.refs.brand).value.trim();
使用
var ReactDOM = require('react-dom');
var brand = ReactDOM.findDOMNode(this.refs.brand).value.trim();
答案 3 :(得分:2)
我会评论@romkyns的答案,但我没有代表。
所以,我一直在关注教程:
https://spring.io/blog/2015/09/15/react-js-and-spring-data-rest-part-2-hypermedia
通过在github上更改项目最新版本的内容。代码中的错误与我也投票的答案有关,但意识到出现了错误。
因此,您必须按React.findDOMNode
替换ReactDOM.findDOMNode
,而不是按照您的说明删除findDOMNode
。
我不确定这是否是由于Reactjs的新版本,但这给了我期待已久的结果。