【发布时间】:2019-11-05 19:22:27
【问题描述】:
我有一个 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();
}
我可以做些什么来解决这个错误?
【问题讨论】:
-
这看起来不错。你能分享完整的组件 sn-p 吗?
-
这是组件:codeshare.io/5wWDdK。当我尝试导航到该组件时抛出错误:codeshare.io/G8jzyB@Easwar
-
这两个文件的内容相同。
-
很抱歉。这是主屏幕:codeshare.io/2W9pdd。错误显示按下导航到聊天屏幕。
-
在聊天界面你能不能把 onChangeText={this.handleChange('textMessage')} 换成 onChangeText={() =>this.handleChange('textMessage')}
标签: javascript reactjs react-native