React js 超出最大更新深度
React js Maximum update depth exceeded
我正在为我的代码更新做一个条件。基本上,
我的代码正在处理这条线
{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})
}
当我没有在路由器中设置路径时,我遇到了这个问题。之后我在路由器的 PrivateRoute
中使用了路径名并且它起作用了。
错误:
右:
我正在为我的代码更新做一个条件。基本上, 我的代码正在处理这条线
{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})
}
当我没有在路由器中设置路径时,我遇到了这个问题。之后我在路由器的 PrivateRoute
中使用了路径名并且它起作用了。
错误:
右: