当前位置: 首页 > 知识库问答 >
问题:

使用React热加载程序时超出了最大调用堆栈大小

扶隐水
2023-03-14

使用react-hot-loader时,我遇到了一个奇怪的问题。

只有这种情况才会抛出未捕获的RangeError:在CourentEdit超出最大调用堆栈大小。__test__REACT_HOT_LOADER__

class PatientEdit extends React.Component {
    test = () => {
        return 123
    }
    constructor(props) {
        super(props)
    }
    static propTypes = {
    }
    render() {
        return (
            <div>{this.test()}</div>)
    }
}

但是下面三个都可以

// A
class PatientEdit extends React.Component {
    test(){
        return 123
    }
    constructor(props) {
        super(props)
    }
    static propTypes = {}
    render() {
        return (
            <div>{this.test()}</div>)
    }
}
// B
class PatientEdit extends React.Component {
    test(){
        return 123
    }
    constructor(props) {
        super(props)
    }
    static propTypes = {}

    render() {
        return (
            <div>{this.test()}</div>)
    }
}
// C
class PatientEdit extends React.Component {
    test = () => {
        return 123
    }
    static propTypes = {}
    render() {
        return (
            <div>{this.test()}</div>)
    }
}

按照文档所述遵循加载程序配置.babelrc如下所示,在文件输入之前添加巴别多填充反应热加载程序/补丁

    // .babelrc
    {
        "presets": [["env", {"modules": false}], "react", "stage-1"],
        "plugins": [
            "react-hot-loader/babel",
            "transform-decorators-legacy",
            "transform-flow-strip-types",
            "transform-object-assign",
            "transform-runtime",
            "typecheck",
            "react-css-modules"
        ]
    }

一开始,我对奇怪的行为感到震惊,忽略了错误堆栈。现在是时候研究反应热加载器的机制,并欢迎详细的解释

共有1个答案

巫马磊
2023-03-14

更多的是猜测而不是真正的推理。(很想听听整个答案)

箭头函数自动将自身绑定到它的运行时上下文。(在本例中,患者编辑类实例,代表。组件)。

我猜问题是,类实例还没有创建,因为构造函数还没有被执行。但是实例需要被绑定。这可能会导致类代码再次运行(期望找到它的构造函数)。这就是导致循环的原因,最终导致调用堆栈溢出。

 类似资料:
  • 我正在使用我岳父让我建立的一个网站作为学习React的借口。我不是一个天生的JavaScript开发人员(更喜欢后端),我知道我下面的代码中可能有一些递归元素,但我就是看不到。谁能告诉我我做错了什么?

  • 如果用户未登录,我尝试将用户重定向到“TrapPage”。 这是我的代码: 当我将函数requireAuth放在onEnter上时,控制台给我一个错误: 我是一个反应迟钝的人,请耐心点:) 我的代码有什么问题?

  • //{this.props.params.item}来自反应路由器(路径('/detail/item/id')) 为什么我的调度是无限循环,直到出错(超过最大调用堆栈大小)

  • 这是我在React中的第一个应用程序。在localhost中,一切正常,当我使用Github Pages部署时,我的应用程序(Info/Images/evenements)中的一些页面无法呈现。每次单击他们的链接访问他们时,我都会在控制台上看到一个白色页面和此错误: range error:object . tostring处超出了最大调用堆栈大小 同样,当我刷新页面时,github pages返

  • 当我添加<代码>时 我得到错误 超过了最大调用堆栈大小 当然,如果我注释掉

  • 当我为图表(react-chartjs-2)获取数据时,我收到了这个错误。我实现了try/catch块,但不知道如何删除这个错误。在Edge浏览器上,我得到了CRIPT28:SCRIPT28:堆栈空间不足 这是我在组件中调用的操作。 这是连接到redux存储的组件。它在我看来一切都很好。