2015-04-04 31 views
13

Z jakiegoś powodu nie jestem w stanie użyć funkcji React.findDOMNode. Przeglądarka narzeka na błąd typu, mówiąc, że React.findDOMNode nie jest funkcją. Jest to kod, gdzie to się dzieje:Nie można użyć funkcji 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;

Jest to jedyny moduł gdzie staram się korzystać z tej funkcji. Reszta React działa dobrze, więc nie mam pojęcia, co może być tutaj problemem.

+2

próby drukowania "React" i "React.version", aby upewnić się, że nie jesteś wciągając wiele wersji reagowania, ponieważ nie ma innego prawdziwego powodu, dla którego byś tego nie zrobił. – kakigoori

+3

Użyj ReactDOM.findDOMNode zgodnie z wyjaśnieniem [tutaj] (http://stackoverflow.com/questions/33031516/reactjs-finddomnode-and-getdomnode-are-not-functions/33031619#33031619). – upg

Odpowiedz

14

React.findDOMNode(component) został wprowadzony w React 0.13.0 jako zamiennik dla component.getDOMNode().

Upewnij się, że zainstalowano Reaktor 0.13.1. Jeśli używasz npm, możesz uruchomić npm view react version, aby sprawdzić, która wersja React jest aktualnie zainstalowana.

+1

Wersja próbna to 0.13.1. Spróbuję jednak funkcji getDOMNode(). – LazyDal

38

W React 15 (i ewentualnie niektóre wcześniejsze wersje, nie jestem pewien) nie trzeba findDOMNode używać pozycje literatury w ogóle:

this.refs.brand.value 

jest wystarczająca.

+0

To działa idealnie – Kokodoko

+0

Perfect Bravo !! – UFM

+0

To powinno być akceptowane ... odkąd rzeczy się zmieniły –

2

Chciałbym skomentować odpowiedź @romkyns, ale nie mam przedstawiciela.

Tak, śledzę tutorial:

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

Zmieniając zawartość z najnowszej wersji projektu na github. Wystąpił błąd zarówno w kodzie, który odnosi się do odpowiedzi, którą również głosowałem, ale zdałem sobie sprawę, że był błąd.

Musisz więc wymienić React.findDOMNode przez ReactDOM.findDOMNode, a nie usuwając findDOMNode, jak podano.

Nie jestem pewien, czy jest to spowodowane nową wersją Reactjs, ale to dało mi oczekiwany rezultat.

+0

Woops, nie widziałem komentarza z @upg –

1

Metoda findDOMNode została przeniesiona z modułu react do modułu react-dom.

Więc trzeba import lub wymagają ReactDOM z react-dom moduł następnie zastąpić

var brand = React.findDOMNode(this.refs.brand).value.trim(); 

Z

var ReactDOM = require('react-dom'); 
var brand = ReactDOM.findDOMNode(this.refs.brand).value.trim(); 
Powiązane problemy