路由跳转
项目内可使用普通的 router.push
等常规方式进行路由跳转,亦可使用项目内提供的 useRouterPush
进行跳转(推荐),本篇主要介绍 useRouterPush
。
介绍
该hook对 router.push
进行二次封装,主要目的是代替 router.push
使用,通过该hook可更便捷得进行跳转, useRouterPush
返回一个对象,包含以下属性和方法:
- routerPush: Vue Router 的 push 方法。
- routerBack: Vue Router 的 back 方法。
- routerPushByKey: 根据路由key跳转的方法。
- toLogin: 跳转到登录页的方法。
- toggleLoginModule: 切换登录模块的方法。
- redirectFromLogin: 从登录页重定向的方法。
注意
在 setup
外使用时需要给 useRouterPush
传入 false
。
详细说明
routerPush
和 routerBack
都是原有属性,就不再赘述了,这里主要介绍一下后面几个。
routerPushByKey
这里的 key
指的是路由的 name
属性,例如某个路由的配置为:
json
{
"name": "soybean",
"path": "/soybean-page",
"component": "layout.base$view.soybean-page"
}
则跳转到该路由的代码为:
ts
import { useRouterPush } from '@/hooks/common/router';
const { routerPushByKey } = useRouterPush();
routerPushByKey('soybean');
它支持传入可选参数 query
或是 params
。
toLogin
字面意思,快速跳转到登录页,注意跳转前要清除登录信息,否则在路由守卫一样会被拦截回首页的。
toggleLoginModule
该方法传入参数类型为
ts
/**
* The login module
*
* - pwd-login: password login
* - code-login: phone code login
* - register: register
* - reset-pwd: reset password
* - bind-wechat: bind wechat
*/
type LoginModule = 'pwd-login' | 'code-login' | 'register' | 'reset-pwd' | 'bind-wechat';
作用是根据传入的 LoginModule
改变登录页挂载的登录功能模块,您可以自行删除或是扩展更多的模块,只需要确保类型是正确的就可以了。
redirectFromLogin
在登录成功选用,相比手动push到首页,它更见名知意。 它会根据登录页的 redirect
查询参数来决定重定向到哪个路由,如果没有 redirect
参数,则默认跳转到首页。
使用
vue
<!-- 某个.vue文件 -->
<script lang="ts" setup>
import { useRouterPush } from '@/hooks/common/router';
const { routerPushByKey } = useRouterPush();
</script>
<template>
<div>
<NButton type="primary" @click="routerPushByKey('root')">返回首页</NButton>
</div>
</template>
ts
<!-- 某个.ts文件 -->
import { useRouterPush } from '@/hooks/common/router';
// 注意传入false
const { routerPushByKey } = useRouterPush(false);
function backToRoot() {
routerPushByKey('root')
}