React Native 中的 this.setState 超出了最大更新深度
maximum update depth exceeded with a this.setState in React Native
我正在尝试增加一个变量“this.state.id”。但是当我尝试这样做时,我遇到了错误
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.
基本上,我的代码就是这样
state={
visibleModal: null,
data:[],
id: 0,
}
checkId() {
this.setState({id: this.state.id + 1})
return (this.state.id);
}
渲染中()
<FlatList
data={this.state.data}
style={styles.container}
renderItem={this.RenderLayout}
numColumns="1"
extraData={this.state}
id={this.checkId(this.state.id)}
/>
但我不明白为什么会出现此错误。我已经尝试在函数“this.renderLayout”中增加增量,但我也犯了同样的错误。
任何人都知道为什么我有那个?或者也许是解决方案?
Clore Nora,你在使用箭头函数时犯了一个小错误
您的代码
<FlatList
data={this.state.data}
style={styles.container}
renderItem={this.RenderLayout}
numColumns="1"
extraData={this.state}
id={this.checkId(this.state.id)}
/>
据此更新
<FlatList
data={this.state.data}
style={styles.container}
renderItem={this.RenderLayout}
numColumns="1"
extraData={this.state}
id={()=>this.checkId(this.state.id)}
/>
和 checkId 函数这样使用
checkId=()=> {
this.setState((prevState)=>({id: prevState.id + 1}));
}
我正在尝试增加一个变量“this.state.id”。但是当我尝试这样做时,我遇到了错误
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.
基本上,我的代码就是这样
state={
visibleModal: null,
data:[],
id: 0,
}
checkId() {
this.setState({id: this.state.id + 1})
return (this.state.id);
}
渲染中()
<FlatList
data={this.state.data}
style={styles.container}
renderItem={this.RenderLayout}
numColumns="1"
extraData={this.state}
id={this.checkId(this.state.id)}
/>
但我不明白为什么会出现此错误。我已经尝试在函数“this.renderLayout”中增加增量,但我也犯了同样的错误。 任何人都知道为什么我有那个?或者也许是解决方案?
Clore Nora,你在使用箭头函数时犯了一个小错误
您的代码
<FlatList
data={this.state.data}
style={styles.container}
renderItem={this.RenderLayout}
numColumns="1"
extraData={this.state}
id={this.checkId(this.state.id)}
/>
据此更新
<FlatList
data={this.state.data}
style={styles.container}
renderItem={this.RenderLayout}
numColumns="1"
extraData={this.state}
id={()=>this.checkId(this.state.id)}
/>
和 checkId 函数这样使用
checkId=()=> {
this.setState((prevState)=>({id: prevState.id + 1}));
}