web-dev-qa-db-fra.com

FindDOMNode et getDOMNode de ReactJS ne sont pas des fonctions

Je construis une application Web avec ReactJS et Flux et j'essaie d'obtenir le nœud de ma division actuelle en utilisant la méthode findDOMNode et j'obtiens l'erreur suivante:

Uncaught TypeError: React.findDOMNode is not a function

Donc, j'ai essayé d'utiliser getDOMNode et j'obtiens la même erreur:

Uncaught TypeError: React.getDOMNode is not a function

J'utilise npm pour construire le JS, le code où j'utilise ces méthodes:

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;

version de ReactJS: 0.14.

EDIT

Comme indiqué dans les réponses, à partir de la version v0.14.0, la bibliothèque DOM ne fait plus partie du noyau React=). J'ai donc apporté quelques modifications à mon 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;

Mais j'ai un autre problème:

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

Changé dans la dernière réaction:

ReactDOM.findDOMNode

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

C'est dans le paquet react-dom. Notez que ReactDOMServer a également été déplacé dans un autre package. Probablement en préparation pour les API spécifiques à la plate-forme liées à React (telles que React natif).

59
user120242

En réaction v0.14 _ La bibliothèque DOM a été déplacée de React.js lui-même. Il y a quelques modifications en Colombie-Britannique, mais si vous écrivez votre code correctement, les modifications ne seront pas pénibles. Veuillez lire ici pour un aperçu complet: https://facebook.github.io/react/blog/#major-changes

2
Pawel