Appearance

路由

这里我们引入的是 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 文档open in new window

.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);
    },
    ...
}