83 lines
1.8 KiB
JavaScript
83 lines
1.8 KiB
JavaScript
import App from './App'
|
|
import uviewPlus from 'uview-plus'
|
|
|
|
const TAB_BAR_STYLE_NOT_FOUND_ERROR = 'setTabBarStyle:fail not TabBar page'
|
|
|
|
const shouldIgnoreTabBarStyleError = (error) => {
|
|
const message = typeof error === 'string'
|
|
? error
|
|
: error?.errMsg || error?.message || ''
|
|
return message.includes(TAB_BAR_STYLE_NOT_FOUND_ERROR)
|
|
}
|
|
|
|
const patchSafeSetTabBarStyle = () => {
|
|
if (typeof uni === 'undefined' || typeof uni.setTabBarStyle !== 'function') {
|
|
return
|
|
}
|
|
|
|
if (uni.setTabBarStyle.__upSafePatched) {
|
|
return
|
|
}
|
|
|
|
const originalSetTabBarStyle = uni.setTabBarStyle.bind(uni)
|
|
const safeSetTabBarStyle = (options = {}) => {
|
|
try {
|
|
const result = originalSetTabBarStyle(options)
|
|
if (result && typeof result.catch === 'function') {
|
|
return result.catch((error) => {
|
|
if (shouldIgnoreTabBarStyleError(error)) {
|
|
return undefined
|
|
}
|
|
return Promise.reject(error)
|
|
})
|
|
}
|
|
return result
|
|
} catch (error) {
|
|
if (shouldIgnoreTabBarStyleError(error)) {
|
|
return undefined
|
|
}
|
|
throw error
|
|
}
|
|
}
|
|
|
|
safeSetTabBarStyle.__upSafePatched = true
|
|
uni.setTabBarStyle = safeSetTabBarStyle
|
|
}
|
|
|
|
// #ifndef VUE3
|
|
import Vue from 'vue'
|
|
import './uni.promisify.adaptor'
|
|
Vue.config.productionTip = false
|
|
App.mpType = 'app'
|
|
patchSafeSetTabBarStyle()
|
|
const app = new Vue({
|
|
...App
|
|
})
|
|
app.$mount()
|
|
// #endif
|
|
|
|
// #ifdef VUE3
|
|
import { createSSRApp } from 'vue'
|
|
export function createApp() {
|
|
patchSafeSetTabBarStyle()
|
|
const app = createSSRApp(App)
|
|
// 使用 uview-plus (版本 3.4.0+)
|
|
app.use(uviewPlus, () => {
|
|
return {
|
|
options: {
|
|
config: {
|
|
// 默认单位 rpx
|
|
unit: 'rpx'
|
|
},
|
|
props: {
|
|
// 可以在这里配置组件默认属性
|
|
}
|
|
}
|
|
}
|
|
})
|
|
return {
|
|
app
|
|
}
|
|
}
|
|
// #endif
|