uni-appios白屏问题

之前出过一个修复uni-app在iso中白屏的问题,但是hbuilder版本过超过3.0.6会造成方法无效

最新方法如下

1、需要一个全局挂载的工具类,Vue.prototype.$utils = utils
2、在需要使用的页面(一般为tab页)最外层需要设置为同一个class名称
3、在onshow方法调用

let pageList = {};  
const utils = {  
    reloadCurrentPage: function(_self, isTab = true) {  
        // #ifdef APP-PLUS  
        var route = _self.$scope.route  
        var data = _self.$scope.options && _self.$scope.options.data  
        var url = '/' + route  
        if (data) {  
            url = '/' + route + '?data=' + data  
        }  
        var isRecovery = true;  
        let newTime = Date.now();  
        if (pageList[url]) {  
            const query = uni.createSelectorQuery().in(_self);  
            //这里select()中替换为自己的样式class名称  
            query.select('.container').fields({size:true}, data => {  
                isRecovery = false  
            }).exec();  
            setTimeout(() => {  
                if (isRecovery) {  
                    //如果获取不到节点  
                    //确保只刷新一次  
                    if (newTime - pageList[url] > 3000) {  
                        //超过3秒才重新刷新,这里设置几秒就行,目的是防止无限刷新  
                        //因为刷新后页面肯定会出来,但是立马再次调用该方法不一定能获取节点  
                        pageList[url] = newTime;  
                        if (isTab) {  
                            uni.reLaunch({  
                                url  
                            })  
                        } else {  
                            uni.redirectTo({  
                                url  
                            })  
                        }  
                    }  
                }  
            }, 600)  
        } else {  
            pageList[url] = newTime;  
        }  
        // if (plus.os.name === 'iOS') {  

        // }  
        // #endif  
    }  
}

 

posted @ 2021-08-28 10:51  我有头盔  阅读(3323)  评论(1编辑  收藏  举报