Javascript 错误:超过最大更新深度。当组件重复调用时,可能会发生这种情况

Javascript 错误:超过最大更新深度。当组件重复调用时,可能会发生这种情况,javascript,reactjs,web,react-redux,Javascript,Reactjs,Web,React Redux,我是个新的反应者,过去几天我一直在玩弄它。每当我尝试运行下面这个简单的代码时,它总是给我错误 “超过最大更新深度。当组件在componentWillUpdate或componentDidUpdate内重复调用setState时,可能会发生这种情况。React限制嵌套更新的数量,以防止无限循环。” 我不知道为什么,有人能帮我吗?先谢谢你 import React,{Component}来自'React'; 从'react dom'导入{render}; 导出默认类State1扩展React.Co

我是个新的反应者,过去几天我一直在玩弄它。每当我尝试运行下面这个简单的代码时,它总是给我错误

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

我不知道为什么,有人能帮我吗?先谢谢你

import React,{Component}来自'React';
从'react dom'导入{render};
导出默认类State1扩展React.Component{
构造函数(){
this.state={value:“llll”};
}
更改(){
设置超时(()=>{
this.setState({value:“eeee”});
},3000);
}
更改2(){
this.setState({value:“eeee”});
}
render(){
{this.change2()};
返回(
{this.state.value}
) 
}

}
每次调用
setState()
,组件都会调用
render
方法来反映状态的变化,然后该方法会调用
change2()
,从而导致一个无休止的循环。

change2
方法中删除setState它会起作用。@MayankShukla为什么这个变化()使用setTimeout()的函数不会像函数change2()那样导致无限循环?因为您没有在任何地方使用该函数,而且如果您在单击按钮或在正确位置执行该函数时不会导致无限循环,则不应在render方法内直接调用setState。哦,好的,这很有意义,非常感谢。那么,在react.js中,如果没有click事件或setTimeout,我该如何使用这个.SetState()?这两种情况是我需要处理的两种情况。另外,为什么使用setTimeout()的change()函数不会像change2()函数那样导致无限循环?
change()仍然会导致无限循环,但速度较慢(每3秒发生一次
setState
,导致重新渲染)。您通常会使用
setState
来响应用户交互或api响应。好吧,那么,如果说我在等待某种事件侦听器/api响应时只使用state而不使用props,是否省事?除此之外,在大多数情况下我都会使用道具?我现在明白了,你让我的生活轻松多了。再次感谢:)