wux-weapp
Version:
一套组件化、可复用、易扩展的微信小程序 UI 组件库
40 lines (37 loc) • 1.19 kB
JavaScript
import { miniprogramThis } from '../internals/global'
/**
* openType 属性可选值为 navigateTo、redirectTo、switchTab、navigateBack、reLaunch
*/
const NATIVE_ROUTES = [
'navigateTo',
'redirectTo',
'switchTab',
'navigateBack',
'reLaunch',
]
export function useNativeRoute(props, vm) {
const { url, openType = 'navigateTo', delta = 1 } = props
const promisify = (method, params) => {
return new Promise((resolve, reject) => {
miniprogramThis[method].call(miniprogramThis, {
...params,
success: resolve,
fail: reject,
})
})
}
if (!url) {
return Promise.reject(
`Invalid value of prop "url" of "${vm.is}": Expected an Non-empty String.`
)
} else if (!NATIVE_ROUTES.includes(openType)) {
return Promise.reject(
`Invalid value of prop "openType" of "${vm.is}": expected "${NATIVE_ROUTES.join(',')}", ` +
`but got ${openType}.`
)
} else if (openType === 'navigateBack') {
return promisify(openType, { delta })
} else {
return promisify(openType, { url })
}
}