【发布时间】:2018-09-13 12:10:53
【问题描述】:
我是新来的反应,过去几天我一直在玩它。每当我尝试在下面运行这个简单的代码时,它总是给我错误。
“超过最大更新深度。当组件在 componentWillUpdate 或 componentDidUpdate 中重复调用 setState 时,可能会发生这种情况。React 会限制嵌套更新的数量以防止无限循环。”
我不知道为什么,有人可以帮我吗?提前谢谢你。
import React, { Component } from 'react';
import { render } from 'react-dom';
export default class State1 extends React.Component {
constructor() {
this.state = { value: "llll" };
}
change() {
setTimeout(()=>{
this.setState({value:"eeee"});
},3000);
}
change2() {
this.setState({value:"eeee"});
}
render() {
{this.change2()};
return (
<div > {this.state.value} </div >
)
}
}
【问题讨论】:
-
从
change2方法中删除 setState 它将起作用。 -
@MayankShukla 为什么使用 setTimeout() 的 change() 函数不会像函数 change2() 那样导致无限循环?
-
因为你没有在任何地方使用那个函数,而且如果你在点击按钮或者在正确的地方执行那个函数也不会导致无限循环,所以不应该在render方法中直接调用setState。跨度>
标签: javascript reactjs web react-redux