2015-04-04 14 views
13

Aus irgendeinem Grund kann ich die React.findDOMNode-Funktion nicht verwenden. Der Browser beschwert sich über Typfehler und sagt React.findDOMNode ist keine Funktion. Dies ist der Code, wo dies der Fall ist:React.findDOMNode-Funktion kann nicht verwendet werden

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;

Dies ist das einzige Modul, in dem ich versuche, diese Funktion zu nutzen. Der Rest von React funktioniert gut, also habe ich keine Ahnung, was hier das Problem sein könnte.

+2

versuchen Ausdrucken „Reagieren“ und „React.version“, um sicherzustellen, dass Sie nicht ziehe mehrere Versionen von react, weil es keinen anderen wirklichen Grund gibt, warum du es nicht haben würdest. – kakigoori

+3

Verwenden Sie ReactDOM.findDOMNode wie hier erklärt [http://stackoverflow.com/questions/33031516/reactjs-finddomnode-and-getdomnode-are-not-functions/33031619#33031619]. – upg

Antwort

14

React.findDOMNode(component) wurde in React 0.13.0 als Ersatz für component.getDOMNode() eingeführt.

Stellen Sie sicher, dass Sie React 0.13.1 installiert haben. Wenn Sie npm verwenden, können Sie npm view react version ausführen, um zu überprüfen, welche Version von React derzeit installiert ist.

+1

React-Version ist 0.13.1. Ich werde jedoch die Funktion getDOMNode() ausprobieren. – LazyDal

38

In React 15 (und möglicherweise einige frühere Versionen, ich bin nicht sicher), die Sie nicht findDOMNode brauchen Refs überhaupt zu benutzen:

this.refs.brand.value 

ausreichend ist.

+0

Das funktioniert perfekt – Kokodoko

+0

Perfect Bravo !! – UFM

+0

Dies sollte akzeptiert werden ... da sich die Dinge geändert haben –

2

Ich hätte kommentiert @romkyns Antwort, aber ich habe nicht die rep.

Also, ich habe nach einem Tutorial gewesen:

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

Durch den Inhalt der neuesten Version des Projektes auf Github zu ändern. Es gab einen Fehler sowohl in dem Code, der sich auf die Antwort bezieht, die ich auch gewählt habe, aber ich erkannte, dass es einen Fehler gab.

Sie müssen also React.findDOMNode durch ReactDOM.findDOMNode ersetzen und nicht findDOMNode wie Sie angegeben löschen.

Ich bin nicht sicher, ob dies aufgrund einer neuen Version von Reactjs ist, aber dies gab mir das erwartete Ergebnis.

+0

Woops, ich habe den Kommentar von @upg nicht gesehen –

1

Die findDOMNode Methode wurde vom react Modul zum react-dom Modul verschoben.

So haben Sie importieren oder erfordern die ReactDOM von react-dom Modul dann

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

Mit

var ReactDOM = require('react-dom'); 
var brand = ReactDOM.findDOMNode(this.refs.brand).value.trim(); 
Verwandte Themen