用于浙政钉小程序的 BasePage 基础代码
简单记录一点代码,避免踩坑
BasePage.js
import dd from 'gdt-jsapi'
export const BasePage = (pageConfig) => {
pageConfig = Object.assign({
anonymous: true // 页面默认可访问
}, pageConfig || {})
// 取出 anonymous 和 onLoad
const { anonymous, onLoad } = pageConfig
return Page(Object.assign(pageConfig, {
onLoad(options) {
/**
* token 格式,value 是 token 的值,expired_at 是 token 过期时间
* { value: '', expired_at: 0 }
*/
const token = dd.getStorageSync({ key: '_USER_TOKEN_' })
const pages = getCurrentPages()
const url = pages[0].route
// 如果不是 anonymous 页面,并且 token 没有值,获取 token 已经失效
if(!anonymous && (!token.data || !( token.data.value || token.data.expired_at < Date.now() ))) {
dd.redirectTo({
url: `/pages/login/login?redirectTo=${url}`
})
return
}
onLoad && onLoad.call(this, options)
}
}))
}index.js
import { BasePage } from '/basePage'
BasePage({
anonymous: false,
onLoad(query) {
console.log('page load')
},
onReady() {
// 页面加载完成
},
onShow() {
// 页面显示
},
onHide() {
// 页面隐藏
},
onUnload() {
// 页面被关闭
},
onTitleClick() {
// 标题被点击
},
onPullDownRefresh() {
// 页面被下拉
},
onReachBottom() {
// 页面被拉到底部
},
onShareAppMessage() {
// 返回自定义分享信息
},
});
在 BasePage 中定义一个变量 anonymous,标记页面是否需要登录,默认 true 为可匿名访问,如果改为 false,表示需要登录,这时候需要验证 token 是否存在以及有效。
同时覆写页面的 onLoad 事件,在页面 onLoad 事件执行之前,判断如果登录状态异常,跳转到登录页面。


![[Component] slot "" is not found (for component "miniprogram_npm/tdesign-miniprogram/popup/popup").](https://www.diushu.cn/zb_users/upload/2023/06/202306171686991447658110.png)





