我遇到一个错误:
超过了最大更新深度。当组件重复调用componentWillUpdate或componentDidUpdate内部的setState时,会发生这种情况。React限制嵌套更新的数量,以防止无限循环。
我的代码是:
class Login extends React.Component {
constructor(props){
super(props);
this.state = {
firstName: '',
password: '',
isLogged: false
}
this.handleSubmit = this.handleSubmit.bind(this);
this.handleChangeFirstName = this.handleChangeFirstName.bind(this);
this.handleChangePassword = this.handleChangePassword.bind(this);
}
handleChangeFirstName(event) {
this.setState({firstName: event.target.value})
}
handleChangePassword(event) {
this.setState({password: event.target.value})
}
handleSubmit(event) {
console.log('login');
console.log('first name:' ,this.state.firstName);
console.log('password:' ,this.state.password);
this.props.loginRequest(this.state.firstName, this.state.password);
// console.log('login',this.props)
}
componentDidUpdate() {
if(this.props.request.message === 'ok'){
console.log('ok');
this.setState({isLogged: true});
this.props.history.push('/');
//path is ok!!!
console.log('path from history: ', this.props.history);
}
}
render() {
return(
<div>
{this.state.isLogged ? <App />
:
<div className="container">
<div className="row">
<div className="col-sm-5 log-style">
<div className="log-title">
<h2>Admin Login</h2>
<p>Please enter you login details</p>
</div>
<div className="row p-2">
<input
type="text"
id="fname"
onChange={this.handleChangeFirstName}
className="form-control input-sm"
placeholder="First name"
style={{'border':'none'}} required/>
</div>
<div className="row p-2">
<input
type="password"
id="pass"
onChange={this.handleChangePassword}
className="form-control input-sm"
placeholder="Password"
style={{'border':'none'}} required/>
</div>
<div className="row" style={{'marginTop':'40px'}}>
<div className="col-sm-6" style={{'padding': '2px'}}>
<input type="checkbox"
style={{
'float': 'left',
'marginTop': '10px',
'marginLeft': '13px'
}} />
<label
style={{
'marginTop': '7px',
'marginLeft': '9px'
}}>Remember me </label>
</div>
<div className="col-sm-6"
style={{
'paddingTop': '7px',
'textAlign': 'right'
}}>
<a href="#"
style={{
'color': 'purple',
'fontSize': '13px'
}}>
Forgot password?</a>
</div>
</div>
<div className="row" style={{'justifyContent': 'center'}}>
<div className="btn btn-sm borderBtn"
style={{
'backgroundColor':'purple'}}
onClick={() => this.handleSubmit(event)}>
<span className="fi-account-login">Login</span>
</div>
</div>
</div>
</div>
</div>
}
</div>
)
}
}
const mapStateToProps = state => (
{ user: state.userReducer.user, request: state.userReducer.request }
);
const mapDispatchToProps = dispatch =>
bindActionCreators({loginRequest}, dispatch);
export default withRouter(connect(mapStateToProps, mapDispatchToProps)(Login));
我有另一个使用路由器切换页面的组件,以及一个包含登录页面的邮件组件。
问题是每次更新组件时,您都会在没有任何类型的中断条件的情况下再次更新它。这将创建一个无限循环。您应该检查此.state.is记录
是否为 true,然后再在此处更新它:
componentDidUpdate() {
if(this.props.request.message === 'ok'){
console.log('ok');
if (!this.state.isLogged) {
this.setState({
isLogged: true
});
}
this.props.history.push('/');
//path is ok!!!
console.log('path from history: ', this.props.history);
}
}
这可以防止在isLogged状态为真时更新它。
超过了最大更新深度。当组件重复调用组件WillUpdate或组件DidUpdate中的setState时,可能会发生这种情况。React限制嵌套更新的数量以防止无限循环。 这是bossinfo.js 这是user.redux.js 你为什么一直报告这个问题?这是指向错误的方向吗?寻求帮助
问题内容: 我试图在ReactJS中切换组件的状态,但出现错误: 超过最大更新深度。当组件重复调用componentWillUpdate或componentDidUpdate内部的setState时,可能会发生这种情况。React限制了嵌套更新的数量,以防止无限循环。 我在代码中看不到无限循环,有人可以帮忙吗? ReactJS组件代码: 问题答案: 那是因为您在render方法中调用了toggle
我在代码中没有看到无限循环,有人能帮忙吗? ReactJS组件代码:
当我运行我的代码时,我收到了这个错误。 超过了最大更新深度。当组件重复调用组件WillUpdate或组件DidUpdate中的setState时,可能会发生这种情况。React限制嵌套更新的数量以防止无限循环。 这是代码。它在引用。 我按照React网站上的文章所说的方式设置了我的东西,它“来了”于这个简洁的控制台类型,这就是我产生上述代码的地方。我对React、JSX和Javascript(以及
当我试图设置表单错误对象时,我遇到了这个问题。基本上,我想在每个输入字段下方显示错误。作为回应,我得到了一个对象数组,我如何设置我的错误对象? 错误-超过了最大更新深度。当组件在useEffect内部调用setState,但useEffect没有依赖关系数组,或者每次呈现时依赖关系之一发生变化时,就会发生这种情况。
我有以下组件:- 我得到了错误:- 我怀疑它必须对多次调用setState的Submit按钮(onClick)做一些事情,但是我似乎无法解决问题。 因此,我有以下问题:- 如何修复点击()? 我想点击开始游戏按钮,然后触发 并 这样我就可以填满套牌,套牌1和套牌2。有没有办法做到这一点?目前,我已经创建了一个这取决于正在填充的甲板,这是用钩子做的正确方法吗? 谢谢你的帮助和时间!