2015-10-09 6 views
37

Ich bin der Aufbau einen Web-App mit ReactJS und Flux und ich versuche, den Knoten meiner aktuellen div mit der Methode findDOMNode und ich die nächsten Fehler angezeigt zu bekommen:ReactJS findDOMNode und GetDOMNode sind keine Funktionen

Uncaught TypeError: React.findDOMNode is not a function 

So habe ich versucht, GetDOMNode zu verwenden und ich erhalte die gleichen Fehler:

Uncaught TypeError: React.getDOMNode is not a function 

ich verwende npm die JS zu bauen, den Code, wo ich diese Methoden verwenden:

var React = require('react'); 
var stores = require('../stores'); 
var MessagesUserContainer = require('./messageusercontainer'); 
var ChatStore = stores.ChatStore; 
var owner = stores.getOwner(); 

var MessagesList = React.createClass({ 

    getInitialState: function(){ 
     return {'muc': []}; 
    }, 
    componentDidUpdate: function(){ 
     var node = React.findDOMNode(this); //Error here 
     node.scrollTop = node.scrollHeight; 
    }, 
    render: function(){ 
     return (
       <div className="chatScroll"> 
        {this.state.muc} 
       </div> 
      ) 
    } 
}); 

module.exports = MessagesList; 

ReactJS verion: 0.14.0

EDIT

Wie in den Antworten darauf hingewiesen, ist die DOM-Bibliothek als von v0.14.0 aus dem Kern Reagieren von, also machte ich ein paar Änderungen an meinem Code:

var React = require('react'); 
var ReactDOM = require('react-dom'); 
var stores = require('../stores'); 
var MessagesUserContainer = require('./messageusercontainer'); 
var ChatStore = stores.ChatStore; 
var owner = stores.getOwner(); 

var MessagesList = React.createClass({ 

    getInitialState: function(){ 
     return {'muc': []}; 
    }, 
    componentDidUpdate: function(){ 
     var node = ReactDOM.findDOMNode(this); 
     node.scrollTop = node.scrollHeight; 
    }, 
    render: function(){ 
     return (
       <div className="chatScroll"> 
        {this.state.muc} 
       </div> 
      ) 
    } 
}); 

module.exports = MessagesList; 

Aber ich habe ein anderes Problem:

Uncaught Error: Invariant Violation: findDOMNode was called on an unmounted component. 

Antwort

51

geändert in neuestem Reagieren:

ReactDOM.findDOMNode 

https://facebook.github.io/react/docs/top-level-api.html#reactdom.finddomnode

Es ist in dem react-dom Paket. Beachten Sie, dass ReactDOMServer auch in ein anderes Paket verschoben wurde. Wahrscheinlich in Vorbereitung auf reaktionsbezogene plattformspezifische APIs (z. B. React native).

+0

Vielen Dank, ich wusste nicht, dass sie ein neues Paket erstellt haben. –

+0

Hilfe Mann, jetzt habe ich diesen Fehler: Uncaught Fehler: Invariant Verletzung: findDOMNode wurde auf einer nicht bereitgestellten Komponente aufgerufen. –

+0

Vielleicht 'ReactDOM.render'? – user120242

2

In reagieren v0.14 DOM-Bibliothek wurde aus React.js selbst verschoben. Es gibt einige BC-Änderungen, aber wenn Sie Ihren Code ordnungsgemäß geschrieben haben, werden Änderungen nicht schmerzhaft sein. Bitte lesen Sie hier für die vollständige Übersicht: https://facebook.github.io/react/blog/#major-changes

Verwandte Themen