之前出過一個修復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 } }
