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

反应:超过最大更新深度

通建安
2023-03-14

当我运行我的代码时,我收到了这个错误。

超过了最大更新深度。当组件重复调用组件WillUpdate或组件DidUpdate中的setState时,可能会发生这种情况。React限制嵌套更新的数量以防止无限循环

这是代码。它在引用。

  69 | }
  70 | 
  71 | addQuestion = () => {
> 72 |   this.setState({numQuestions: this.state.numQuestions + 1});
  73 |  }
  74 | 
  75 | render() {

  131 | <div className="field">
  132 |     <div className="endButtons">
  133 |       <button id="addQuestionButton"
> 134 |         onClick={this.addQuestion()}>Add Question</button>
  135 |       <input
  136 |         type="submit"
  137 |         value="Submit"

   5 | import App from './App';
   6 | import registerServiceWorker from './registerServiceWorker';
   7 | 
>  8 | ReactDOM.render(<App />, document.getElementById('root'));
   9 | registerServiceWorker();
  10 | 
  11 | 

我按照React网站上的文章所说的方式设置了我的东西,它“来了”于这个简洁的控制台类型,这就是我产生上述代码的地方。我对React、JSX和Javascript(以及一般的编程)很陌生,我不太了解这意味着什么,所以如果你也能解释一下,那就太棒了。

谢谢!

共有3个答案

郑嘉悦
2023-03-14

打印的错误消息非常不言自明。当您启动应用程序时,会直接调用this.addQuestion(),这会触发重新渲染。然后重新渲染将再次调用相同的函数,循环将继续,直到React有足够的循环。

就像@Tholle在回答中所说的那样,只需给它引用你想要的函数即可。不要调用它。

此外,无论何时设置状态变量,其值取决于前一状态,建议将回调函数传递给setState(),而不是传递给对象。因此,应:

this.setState(prevState => ({numQuestions: prevState.numQuestions + 1}));

这与你得到的错误无关,但我还是建议你做的。

耿炎彬
2023-03-14

这个。addQuestion()在组件每次重新呈现时调用,从而导致循环。

更改方法this。将问题()添加到()=

<button id="addQuestionButton" onClick={() => this.addQuestion()}>Add Question</button>

诸葛奇玮
2023-03-14

您正在呼叫此。在呈现方法中添加Question,然后调用setStatesetState,这将导致新的呈现,无限循环将继续。

您希望给< code>onClick一个函数引用,而不是直接调用它。

<button id="addQuestionButton" onClick={this.addQuestion}>Add Question</button>
 类似资料:
  • 我正在使用FullCalendar进行反应,我正在与状态作斗争……它返回以下消息: 错误:超过最大更新深度。当组件在componentWillUpdate或componentDidUpdate内重复调用setState时,可能会发生这种情况。React限制嵌套更新的数量,以防止无限循环。 我删除了代码中所有不必要的部分。 如果您想让我提供更多信息,请告诉我。欢迎任何反馈/想法!谢谢

  • 这是我的一段代码: 但这给了我错误,说超过了最大更新深度。当组件重复调用组件内部的 setState 时,可能会发生这种情况“组件将更新”或“组件更新”。React 限制嵌套更新的数量,以防止无限循环。 这是一个快照: 我该如何解决这个问题?

  • 我有这个错误:错误:超过最大更新深度。当组件重复调用componentWillUpdate或componentDidUpdate内部的setState时,会发生这种情况。React限制嵌套更新的数量,以防止无限循环。 但是我不明白怎么解决!我只是在发布我的代码,对不起… 我的代码:

  • 早上好,我正在开发一个React应用程序,通过REST API与后端通信。 该应用程序体系结构还使用 React 路由器,并使用服务器提供并存储在中的 JWT 令牌实现身份验证功能。 基本上: 用户连接到应用程序 如果用户未登录,则重定向到登录页面 登录后,它会重定向到带有路径的主页,其中应该显示带有路径的组件和带有路径的组件(如果一个很好地理解React路由器的工作) 在启动应用程序时,用户被正

  • 我试图在参数更改时映射我的 redux 数组。它按预期呈现,但我在控制台中收到此错误。尝试了一些对useeffect的依赖性,但无法修复它。不知道为什么会发生这种情况。感谢您的帮助。 错误; 超过最大更新深度。当组件在useEffect中调用setState时,可能会发生这种情况,但useEfect要么没有依赖项数组,要么在每次渲染时都会更改其中一个依赖项。 我的代码;

  • 超过了最大更新深度。当组件重复调用组件WillUpdate或组件DidUpdate中的setState时,可能会发生这种情况。React限制嵌套更新的数量以防止无限循环。 这是bossinfo.js 这是user.redux.js 你为什么一直报告这个问题?这是指向错误的方向吗?寻求帮助