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

超过了最大调用堆栈大小react

闽承望
2023-03-14
import React,{ Component } from 'react';
import { connect } from 'react-redux';
import { itemid } from '../actions/action';


class DetailPage extends Component{
    componentWillUpdate(){
    this.props.dispatch(itemid([this.props.params.item,`${this.props.params.item}${this.props.params.id}`]))
    }
    render(){
        const { dispatch } = this.props;
        return(
                <div>
                    {this.props.params.id}
                </div>
            )
    }
}
function selectstate(state){
    return{
        state
    }
}
export default connect(selectstate)(DetailPage)

//{this.props.params.item}来自反应路由器(路径('/detail/item/id'))

为什么我的调度是无限循环,直到出错(超过最大调用堆栈大小)

共有1个答案

时修贤
2023-03-14

您正在对< code>componentWillUpdate进行调度。所以每次你更新状态,你都是在更新状态。永远不要修改componentWillUpdate:https://Facebook . github . io/react/docs/component-specs . html # updating-componentWillUpdate中的状态

顺便说一下,在< code > componentWillReceiveProps 中这样做可能会做同样的事情,因为您的状态(来自redux存储)将作为< code>props进入。

问题是为什么更新后还要做派单?是因为下面的功能设置状态吗?

如果您希望在设置特定状态后进行调度,那么您可以使用< code > shouldcomponentdupdate 来阻止除该状态之外的更新。但这感觉像是这种配置的副作用。我认为最好在设置状态的同时调度事件,或者作为状态的回调。

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

  • 对于我的节点应用程序,我有一个运行在Debian上的服务器(app.js),它使用socket.io向我的客户机(index.html)提供html和websocket数据。我正在尝试制作一个回合制的HTML5多人游戏。 在使用socket.emit()/io.emit()和socket.on()成功执行了多次数据传输后,我的服务器在socket.emit()调用上崩溃,出现错误 “events.

  • 问题内容: 我无法终生弄清楚为什么我会出错: 超过最大呼叫堆栈大小 运行此代码时。如果我注释掉: 错误消失了。我什至已注释掉其他电话,以尝试缩小问题的出处。 代码(删除了额外的功能): 问题答案: 由于此循环: 您正在从render调用getTabs方法,并在其中进行操作,将触发重新渲染,再次是getTabs ..... 无限循环 。 从方法中删除,它将起作用。 另一个问题在这里: 我们需要为on

  • 索引.js Questionlist.jsx 问题.jsx Scorebox.jsx 结果. jsx

  • 今天,我试图在CMD中使用()创建新的react app,结果出现了这个错误: 此外,如果我试图安装此文件夹中的任何包,如,安装将会被卡住,我也试图更新我的create-react-app,但没有任何变化。我通过在而不是在 中创建react应用程序来解决这个问题,所以我的问题是:为什么我不能在长路径中创建react应用程序,比如为什么需要在中创建?

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