uni-app 路由封装(简易版)

x33g5p2x  于2022-03-01 转载在 uni-app  
字(1.8k)|赞(0)|评价(0)|浏览(595)

在实践运用中,经常需要在路由跳转时判断是否需要登录权限,页面跳转时,添加加在if判断。

插件市场也有一些这种插件,配置也稍微复制,大部分朝向vue-router。

注:本次路由封装,只是单纯的判断是否需要登录权限,其余的暂无考虑。

项目地址:https://gitee.com/jielov/uni-app-tabbar

1.创建js

先在跟目录下的 utils文件夹下创建 routeBlocker.js

routeBlocker.js代码内容

  1. //xuex 数据
  2. import store from '@/store/index.js'export default functionopenPage(args) {
  3. //判断跳转方式是否正确
  4. if (!['navigateTo', 'switchTab', 'reLaunch', 'redirectTo'].includes(args.type)) {
  5. console.log("type必须是以下的值[navigateTo,switchTab,reLaunch,redirectTo]");
  6. return;
  7. }
  8. //路由参数
  9. let url = args.url, //页面路径
  10. type = args.type, //跳转方式
  11. ifLogin = args.login || false; //是否需要判断登录
  12. //是否需要判断登录
  13. if(ifLogin) {
  14. //根据vuex 判断是否登录
  15. if (!store.state.hasLodin) {
  16. uni.showToast({
  17. title: '请先登录',
  18. duration: 2000});
  19. setTimeout(() =>{
  20. //登录页面-路径
  21. url = '/pages/login/login'
  22. //跳转方法
  23. //type = 'redirectTo'
  24. //执行跳转
  25. startRoute(type, url)
  26. }, 500)
  27. return;
  28. }
  29. }
  30. //执行跳转
  31. startRoute(type, url)
  32. }
  33. //开始跳转
  34. functionstartRoute(type, url) {
  35. return new Promise((resolve, reject) =>{
  36. uni[type]({
  37. url: url,
  38. success(res) {},
  39. fail(err) {}
  40. })
  41. })
  42. }

View Code

2.使用方式

main.js中导入

  1. //导入 路由封装
  2. import routr from './utils/routeBlocker.js'
  3. //vue2导入
  4. Vue.prototype.$routr = routr
  5. //vue3 导入
  6. //app.config.globalProperties.$routr = routr; 

页面使用

路由传参的话,还是以拼接传过去 ,接收方法不变

vue2 方法

  1. this.$routr({
  2. url: '/pages/my/my', //页面路径 添加参数 '/pages/my/my?id=1&name=uniapp'
  3. type: 'navigateTo', //跳转方式 navigateTo,switchTab,reLaunch,redirectTo
  4. login: true // 是否需要判断登录
  5. })

vue3方法

  1. <template>
  2. <view class="content" @click="click">路由跳转
  3. </view>
  4. </template>
  5. <script>import {
  6. getCurrentInstance
  7. } from 'vue';
  8. export default{
  9. setup() {
  10. //获取上下文实例
  11. const {
  12. proxy
  13. } =getCurrentInstance();
  14. //开始跳转
  15. functionclick(e) {
  16. proxy.$routr({
  17. url: '/pages/my/my', //页面路径 添加参数 '/pages/my/my?id=1&name=uniapp'
  18. type: 'navigateTo', //跳转方式 navigateTo,switchTab,reLaunch,redirectTo
  19. login: true //是否需要判断登录
  20. })
  21. }
  22. return{
  23. click
  24. }
  25. }
  26. }
  27. </script>
  28. <style>
  29. </style>

View Code

本文来自博客园,作者:虚乄,转载请注明原文链接:https://www.cnblogs.com/lovejielive/p/15938794.html

相关文章

最新文章

更多