首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ReactJS、findDOMNode和getDOMNode不是函数

ReactJS、findDOMNode和getDOMNode不是函数
EN

Stack Overflow用户
提问于 2015-10-09 06:40:09
回答 3查看 37K关注 0票数 53

我正在使用ReactJS和Flux构建一个web应用程序,我试图使用findDOMNode方法获取当前div的节点,然后得到下一个错误:

代码语言:javascript
运行
复制
Uncaught TypeError: React.findDOMNode is not a function

因此,我尝试使用getDOMNode,得到了相同的错误:

代码语言:javascript
运行
复制
Uncaught TypeError: React.getDOMNode is not a function

我使用npm来构建JS,也就是我使用以下方法的代码:

代码语言:javascript
运行
复制
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

编辑

正如答案中指出的那样,DOM库( v0.14.0 )超出了React核心,所以我对代码做了一些修改:

代码语言:javascript
运行
复制
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;

但我有另一个问题:

代码语言:javascript
运行
复制
Uncaught Error: Invariant Violation: findDOMNode was called on an unmounted component.
EN

Stack Overflow用户

发布于 2022-06-06 20:34:03

从React 18开始,ReactDOM应该从react-dom/client导入,而findDOMNode导出被认为是不推荐的,并且仍然是从react-dom导出的。

因此:

代码语言:javascript
运行
复制
import {findDOMNode} from 'react-dom';
import ReactDOM from 'react-dom/client';

更新:添加 documentation link

票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33031516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档