Подтвердить что ты не робот

Невозможно использовать функцию React.findDOMNode

По какой-то причине я не могу использовать функцию 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;
4b9b3361

Ответ 1

В React 15 (и, возможно, в некоторых более ранних версиях, я не уверен) вам не нужно findDOMNode использовать refs вообще:

this.refs.brand.value

.

Ответ 2

React.findDOMNode(component) был введен в React 0.13.0 в качестве замены для component.getDOMNode().

Убедитесь, что у вас установлен React 0.13.1. Если вы используете npm, вы можете запустить npm view react version, чтобы проверить, какая версия React установлена ​​на данный момент.

Ответ 3

Я бы прокомментировал ответ @romkyns, но у меня нет репутации.

Итак, я слежу за учебником:

https://spring.io/blog/2015/09/15/react-js-and-spring-data-rest-part-2-hypermedia

Изменив контент из новейшей версии проекта на github. Произошла ошибка как в коде, относящемся к ответу, который я также проголосовал, но осознал, что была ошибка.

Итак, вы должны заменить React.findDOMNode на ReactDOM.findDOMNode, а не на удаление findDOMNode, как вы заявили.

Я не уверен, что это связано с новой версией Reactjs, но это дало мне ожидаемый результат.

Ответ 4

Метод 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();