路由
这里我们引入的是
uni-simple-router
,uni本身是并不支持js路由配置的,这里实现的路由功能在app端其实也并不完整。全局最主要的就是 两个勾子beforeEach
afterEach
。
组件内导航守卫
export default {
...
beforeRouteEnter(to, from, next) {// 在渲染该组件的对应路由被 confirm 前调用
// 因为当守卫执行前,组件实例还没被创建,不!能!获取组件实例 `this`
next(vm => {
// 通过 `vm` 访问组件实例
})
},
beforeRouteUpdate(to, from, next) {// 在当前路由改变,但是该组件被复用时调用
// 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
// 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
// 可以访问组件实例 `this`
},
beforeRouteLeave(to, from, next) {// 导航离开该组件的对应路由时调用
// 可以访问组件实例 `this`
}
...
}
此路由插件非uni 官方提供,后期可以根据需求对路由做更多改造,更多说明请查看 uni-simple-router
文档
$link 路由切换
在 .vue
页面中,我们可以使用全局函数 this.$link
来切换页面地址,并传递参数。
// 无参数
this.$link('/pages/components/index');
// 带参数
this.$link('/pages/components/index', {
name: 'lisa',
age: 20
});
//完整版
this.$link({
url: 'pages/components/empty/index',
params: {
name: 'lisa'
}
})
页面接收参数
在目标页面中,我们可以通过生命周期钩子 onLoad
来获取 link
传递过来的参数。
export default {
...
onLoad(opt){
//opt:{name:lisa}
this.loadPtInfo(opt);
},
...
}