在我的React应用程序中,我收到以下错误:“错误:超过了最大更新深度。当组件重复调用组件内部的setState时,可能会发生这种情况。React限制嵌套更新的数量,以防止无限循环”。一旦for循环完成,我就改变了状态。我不知道我做错了什么。任何帮助都将不胜感激。
//React
class Pagination extends Component {
state = {
li: []
}
liTags = (pageNum) =>{
return( <li className="PageNumber" key={pageNum}><span>{pageNum}</span></li>)
}
pagincationScript = (totalPages, page) =>{
let li = []
for(let i = 1; i < totalPages; i++){
li.push(this.liTags(i))
}
this.setState({
li: li
})
if(page > 1 && page < totalPages){
return(
<React.Fragment>
<li className="Btn Previous"><span><i>←</i>Previous</span></li>
{this.state.li}
<li className="Btn Previous"><span><i>→</i>Next</span></li>
</React.Fragment>
)
}
}
render() {
return (
<div className="Pagination">
<ul>
{this.pagincationScript(10,5)}
</ul>
</div>
)
}
}
export default PagePagination;
将您的liTags()
移到paginationScript()内,并将
您基本上是在导致堆栈溢出。
您在渲染中调用setState
,但是,因为setState
调度另一个渲染,您的代码会导致无限循环。
您需要停止调用this.setState
每次渲染。
在您的例子中,您不需要将li放在组件的状态中,您可以简单地渲染{li}
。
pagincationScript = (totalPages, page) => {
let li = []
for(let i = 1; i < totalPages; i++) {
li.push(this.liTags(i))
}
if(page > 1 && page < totalPages) {
return(
<React.Fragment>
<li className="Btn Previous"><span><i>←</i>Previous</span></li>
{li}
<li className="Btn Previous"><span><i>→</i>Next</span></li>
</React.Fragment>
)
}
}
但是,如果需要它位于状态内,则应将填充 this.state.li
的代码移动到生命周期方法,如 componentDidUpdate
(如果使用钩子,则应使用Effect)。
我按照这个教程在React with Redux中实现了一个简单的登录表单:https://js lancer . com/blog/2017/04/27/a-simple-log in-flow-with-React-and-Redux/ 一切正常,但当我添加cookie时,我收到错误: 警告:在现有状态转换期间(例如在中)无法更新。渲染方法应该是道具和状态的纯粹函数。 以及: 未捕获的不变违规
我遇到一个错误: 超过了最大更新深度。当组件重复调用componentWillUpdate或componentDidUpdate内部的setState时,会发生这种情况。React限制嵌套更新的数量,以防止无限循环。 我的代码是: 我有另一个使用路由器切换页面的组件,以及一个包含登录页面的邮件组件。
早上好,我正在开发一个React应用程序,通过REST API与后端通信。 该应用程序体系结构还使用 React 路由器,并使用服务器提供并存储在中的 JWT 令牌实现身份验证功能。 基本上: 用户连接到应用程序 如果用户未登录,则重定向到登录页面 登录后,它会重定向到带有路径的主页,其中应该显示带有路径的组件和带有路径的组件(如果一个很好地理解React路由器的工作) 在启动应用程序时,用户被正
我有以下组件:- 我得到了错误:- 我怀疑它必须对多次调用setState的Submit按钮(onClick)做一些事情,但是我似乎无法解决问题。 因此,我有以下问题:- 如何修复点击()? 我想点击开始游戏按钮,然后触发 并 这样我就可以填满套牌,套牌1和套牌2。有没有办法做到这一点?目前,我已经创建了一个这取决于正在填充的甲板,这是用钩子做的正确方法吗? 谢谢你的帮助和时间!
尝试在基本应用程序中包含 react-table,该应用程序在字段中接受输入,在字段内容更改时将其存储在组件状态中,然后在按下按钮时从 Github 获取数据。 在我加上线之前一切正常 该页面可以正常加载,但是当输入字段改变时(即你在其中输入),应用程序崩溃并显示错误: 错误:超过了最大更新深度。当组件重复调用componentWillUpdate或componentDidUpdate内部的set
我有这个错误:错误:超过最大更新深度。当组件重复调用componentWillUpdate或componentDidUpdate内部的setState时,会发生这种情况。React限制嵌套更新的数量,以防止无限循环。 但是我不明白怎么解决!我只是在发布我的代码,对不起… 我的代码: