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.
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).
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