2015-10-09 21 views
37

Tôi đang xây dựng một ứng dụng web với ReactJS và Flux và tôi đang cố gắng để có được những nút của div hiện tại của tôi bằng cách sử dụng phương pháp findDOMNode và tôi nhận được lỗi sau:ReactJS findDOMNode và getDOMNode không chức năng

Uncaught TypeError: React.findDOMNode is not a function 

Vì vậy, tôi cố gắng sử dụng getDOMNode và tôi nhận được lỗi rất giống nhau:

Uncaught TypeError: React.getDOMNode is not a function 

tôi đang sử dụng NPM để xây dựng JS, mã nơi tôi sử dụng các phương pháp:

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

Như đã chỉ ra trong câu trả lời, thư viện DOM như của v0.14.0 là ra khỏi lõi Phản ứng, vì vậy tôi làm một vài thay đổi đối với mã của tôi:

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; 

Nhưng tôi gặp một vấn đề khác:

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

Trả lời

51

Thay đổi trong mới nhất Phản ứng:

ReactDOM.findDOMNode 

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

Nó nằm trong gói này react-dom. Lưu ý rằng ReactDOMServer cũng đã được chuyển sang gói khác. Có lẽ để chuẩn bị cho các API nền tảng cụ thể có liên quan đến React (chẳng hạn như React native).

+0

Cảm ơn bạn, tôi không biết họ đã tạo gói mới. –

+0

Giúp đỡ người đàn ông, bây giờ tôi đã nhận lỗi này: Lỗi không bắt buộc: Vi phạm bất biến: findDOMNode được gọi trên thành phần chưa được gắn kết. –

+0

Có lẽ 'ReactDOM.render'? – user120242

2

Phản ứng v0.14 Thư viện DOM đã được di chuyển từ chính React.js. Có một số thay đổi của BC, nhưng nếu bạn viết mã theo cách thích hợp thì những thay đổi sẽ không gây đau đớn. Vui lòng đọc tại đây để biết tổng quan đầy đủ: https://facebook.github.io/react/blog/#major-changes

Các vấn đề liên quan