Ответ 1
В React 15 (и, возможно, в некоторых более ранних версиях, я не уверен) вам не нужно findDOMNode
использовать refs вообще:
this.refs.brand.value
.
По какой-то причине я не могу использовать функцию 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;
В React 15 (и, возможно, в некоторых более ранних версиях, я не уверен) вам не нужно findDOMNode
использовать refs вообще:
this.refs.brand.value
.
React.findDOMNode(component)
был введен в React 0.13.0
в качестве замены для component.getDOMNode()
.
Убедитесь, что у вас установлен React 0.13.1
. Если вы используете npm, вы можете запустить npm view react version
, чтобы проверить, какая версия React установлена на данный момент.
Я бы прокомментировал ответ @romkyns, но у меня нет репутации.
Итак, я слежу за учебником:
https://spring.io/blog/2015/09/15/react-js-and-spring-data-rest-part-2-hypermedia
Изменив контент из новейшей версии проекта на github. Произошла ошибка как в коде, относящемся к ответу, который я также проголосовал, но осознал, что была ошибка.
Итак, вы должны заменить React.findDOMNode
на ReactDOM.findDOMNode
, а не на удаление findDOMNode
, как вы заявили.
Я не уверен, что это связано с новой версией Reactjs, но это дало мне ожидаемый результат.
Метод findDOMNode
переместился из модуля react
в модуль react-dom
.
Итак, у вас есть импорт или требуется ReactDOM из модуля react-dom
, а затем замените
var brand = React.findDOMNode(this.refs.brand).value.trim();
С
var ReactDOM = require('react-dom');
var brand = ReactDOM.findDOMNode(this.refs.brand).value.trim();