2015-10-09 21 views
37

Sto costruendo una web-app con ReactJS e Flux e sto cercando di ottenere il nodo della mia div corrente utilizzando il metodo findDOMNode ed ottengo l'errore successivo:ReactJS findDOMNode e getDOMNode non sono funzioni

Uncaught TypeError: React.findDOMNode is not a function 

Così, ho cercato di usare getDOMNode e ottengo lo stesso errore:

Uncaught TypeError: React.getDOMNode is not a function 

sto usando NPM per costruire la JS, il codice in cui io uso questi metodi:

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

Come indicate nelle risposte, la libreria DOM di v0.14.0 è fuori del nucleo React, così ho fatto alcune modifiche al mio codice:

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; 

ma ho avuto un altro problema:

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

risposta

51

Modificato nella ultima Reagire:

ReactDOM.findDOMNode 

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

E 'nel pacchetto react-dom. Si noti che ReactDOMServer è stato spostato in un altro pacchetto. Probabilmente in preparazione per le API specifiche della piattaforma React (come React native).

+0

Grazie, non sapevo che hanno creato un nuovo pacchetto. –

+0

Aiuto man, ora ho ricevuto questo errore: Errore non rilevato: violazione invariata: findDOMNode è stato chiamato su un componente non montato. –

+0

Forse 'ReactDOM.render'? – user120242

2

In risposta v0.14 La libreria DOM è stata spostata da React.js stesso. Ci sono alcune modifiche BC, ma se hai scritto il tuo codice in modo corretto, le modifiche non saranno dolorose. Si prega di leggere qui per una panoramica completa: https://facebook.github.io/react/blog/#major-changes

Problemi correlati