整体实现思路:
微信小程序中 实现想vue中 一样的 router.beforEach()函数, 实现路由拦截, 基础示例代码如下:
class Router {
constructor() {
this.callback = () => {}
}
beforeEach(callback) {
callback && (this.callback = callback);
}
push(to) {
this.callback('navigateTo', to)
}
redirectTo(to) {
this.callback('redirectTo', to);
}
reLunch(to){
this.callback('reLunch', to);
}
}
let router = new Router();
router.beforeEach((type, to) =>{
console.log(type, to);
if (isLogin) {
wx[type]({path:'/login'});
} else {
wx[type]({...to});
}
})
router.push('/home');
router.replace('/home');
router.back('/home');