reactjs - React js超过最大更新深度
问题描述
我正在为我的代码中的更新做一个条件。基本上,我的代码正在使用这一行
{this.state.index === 20 ? this.setState({index: 0,index2: 1}) : null }
(这条线在渲染中)
现在我想与一个变量进行比较。但是当我在做
{this.state.index === this.state.list.length ? this.setState({index: 0,index2: 1}) : null }
我有错误
Error: Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.
我不明白这两行之间的区别,所以我不明白为什么会出现这个错误。有人可以向我解释为什么我有这个吗?谢谢
更新:我的渲染:
render() {
return (
<div>
Search Film :
<form onSubmit={this.mySubmitHandler}>
<input
type='text'
onChange={this.myChangeHandler}
/>
<input
type='submit'
/>
</form>
{this.state.list.slice(this.state.index, this.state.index2).map(function(stock, id){
return (<p key={id}> Title : {stock.title} <br></br>release date : {stock.release_date}<br></br> popularité : {stock.popularity} <br></br> résumé : {stock.overview.substring(0,150)}...</p>)})}
{this.state.index === this.state.list.length ? this.setState({index: 0,index2: 1}) : null }
{this.state.index === -1 ? this.setState({index: 0,index2: 1}) : null }
Top {this.state.list.length} Search : {this.state.index + 1}/ {this.state.list.length}
<button onClick={() => {this.setState({index: this.state.index + 1,index2: this.state.index2 + 1})}}>Next Film</button>
<button onClick={() => {this.setState({index: this.state.index - 1,index2: this.state.index2 - 1})}}>Previous Film</button>
</div>
);
}
解决方案
问题是我渲染中的 setState 。
为了解决这个问题,我只是改变了我的状况。
基本上,在我的渲染中,我在使用按钮时调用了一个函数
<button onClick={() => {this.checkclick()}}>Next Film</button>
并且功能和以前一样
checkclick() {
this.setState({index: this.state.index + 1,index2: this.state.index2 + 1})
if (this.state.index === this.state.list.length)
this.setState({index: 0,index2: 1})
}
推荐阅读
- node.js - 无法读取未定义的属性(读取“错误”)
- javascript - 获取 pipe() 状态 JavaScript
- python - 如何关闭一个特定的屏幕?
- python - 将 aws 胶水 get-tables 输出从 json 转换为 PySpark Dataframe
- directory - 仅复制文件夹
- reactjs - 如何将 .map 抽象到其他 React 组件以列出 API 调用
- java - 具有自定义域名的 Wiremock/Mockserver?
- javascript - Jquery x-editable 不起作用 - Laravel 6.x
- aws-lambda - Lambda 函数中的 sessionId 可以是 Alexa 技能的 ID?
- css - 无法完全覆盖 MUI TableCell 中的顶部和底部填充以使整个单元格内容可点击