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()
}

添加捕获你可以发现错误