componentDidMount() 中的 setState() 在 APK 中抛出错误
setState() in componentDidMount() throwing an error in APK
我目前正在做一个项目,使用 Expo 35(或 React Native 0.59)
我的代码在 IOS 模拟器和 ADV 中测试时有效,使用 expo start
。
但是,在 APK (expo build:android
) 中测试时,它会以某种方式抛出错误并自行突然关闭。
这是我的代码。
componentDidMount() {
Promise.all([
4~5 Axios requests...
])
.then(() => {
this.setState({
...
loaded: true,
...
});
})
}
有解决此问题的想法吗?
componentDidMount
在渲染组件之前启动,setState
将重新渲染组件并触发额外的渲染,但它会在应用程序更新屏幕之前发生,这是错误的。
您可以改为执行以下操作:
_execute = ()=>{
Promise.all([
4~5 Axios requests...
])
.then(() => {
this.setState({
...
loaded: true,
...
});
})
}
componentDidMount() {
this._execute()
}
_execute = ()=>{
Promise.all([
4~5 Axios requests...
])
.catch(e=>console.warn(e))
.then(() => {
this.setState({
...
loaded: true,
...
});
})
}
componentDidMount() {
this._execute()
}
添加捕获你可以发现错误
我目前正在做一个项目,使用 Expo 35(或 React Native 0.59)
我的代码在 IOS 模拟器和 ADV 中测试时有效,使用 expo start
。
但是,在 APK (expo build:android
) 中测试时,它会以某种方式抛出错误并自行突然关闭。
这是我的代码。
componentDidMount() {
Promise.all([
4~5 Axios requests...
])
.then(() => {
this.setState({
...
loaded: true,
...
});
})
}
有解决此问题的想法吗?
componentDidMount
在渲染组件之前启动,setState
将重新渲染组件并触发额外的渲染,但它会在应用程序更新屏幕之前发生,这是错误的。
您可以改为执行以下操作:
_execute = ()=>{
Promise.all([
4~5 Axios requests...
])
.then(() => {
this.setState({
...
loaded: true,
...
});
})
}
componentDidMount() {
this._execute()
}
_execute = ()=>{
Promise.all([
4~5 Axios requests...
])
.catch(e=>console.warn(e))
.then(() => {
this.setState({
...
loaded: true,
...
});
})
}
componentDidMount() {
this._execute()
}
添加捕获你可以发现错误