我有一个React Native组件,需要在其中使用ComponentDidMount
。同样在ComponentDidMount
中,我正在使用setState
,因为我不确定有其他方法可以解决我的目的。我猜因为这个原因,我得到了错误:Invariant Violation: Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate
。尽管我没有使用componentWillUpdate
或componentDidUpdate
。这是我的代码:
currentUsers=()=>{
let dbRef = firebase.database().ref('Users');
dbRef.on('child_added', (val)=>{
let person = val.val();
person.phone = val.key;
this.setState((prevState)=> {
return {
users: [...prevState.users, person]
}
})
})
}
componentWillMount(){
this.currentUsers();
}
我该怎么办才能解决该错误?
答案 0 :(得分:1)
so,错误基本上是在render方法中调用func,后者再次调用setState,从而导致无限循环。始终建议在调用render方法时使用匿名函数。因此,替换
onChangeText={this.handleChange('textMessage')} to onChangeText={() =>this.handleChange('textMessage')}
为您服务。希望有帮助。
答案 1 :(得分:0)
您能为整个Class组件提供代码吗?