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

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

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

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

1.创建js

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

routeBlocker.js代码内容

// xuex 数据
import store from '@/store/index.js' export default function openPage(args) {
//判断跳转方式是否正确
if (!['navigateTo', 'switchTab', 'reLaunch', 'redirectTo'].includes(args.type)) {
console.log("type必须是以下的值[navigateTo,switchTab,reLaunch,redirectTo]");
return;
} //路由参数
let url = args.url, //页面路径
type = args.type, // 跳转方式
ifLogin = args.login || false; // 是否需要判断登录 //是否需要判断登录
if (ifLogin) {
//根据vuex 判断是否登录
if (!store.state.hasLodin) {
uni.showToast({
title: '请先登录',
duration: 2000
});
setTimeout(() => {
//登录页面-路径
url = '/pages/login/login'
//跳转方法
// type = 'redirectTo'
//执行跳转
startRoute(type, url)
}, 500)
return;
}
}
//执行跳转
startRoute(type, url)
} //开始跳转
function startRoute(type, url) {
return new Promise((resolve, reject) => {
uni[type]({
url: url,
success(res) {},
fail(err) {}
})
})
}

2.使用方式

main.js中导入

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

页面使用

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

vue2 方法

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

vue3方法

<template>
<view class="content" @click="click">
路由跳转
</view>
</template> <script>
import {
getCurrentInstance
} from 'vue';
export default {
setup() {
//获取上下文实例
const {
proxy
} = getCurrentInstance();
//开始跳转
function click(e) {
proxy.$routr({
url: '/pages/my/my', //页面路径 添加参数 '/pages/my/my?id=1&name=uniapp'
type: 'navigateTo', //跳转方式 navigateTo,switchTab,reLaunch,redirectTo
login: true // 是否需要判断登录
})
}
return {
click
}
}
}
</script>
<style>
</style>

uni-app 路由封装(简易版)的更多相关文章

  1. Android借助Application重写App的Crash(简易版)

    MainActivity如下: package cn.testcrash; import android.app.Activity; import android.os.Bundle; /** * D ...

  2. .NET Core的文件系统[5]:扩展文件系统构建一个简易版“云盘”

    FileProvider构建了一个抽象文件系统,作为它的两个具体实现,PhysicalFileProvider和EmbeddedFileProvider则分别为我们构建了一个物理文件系统和程序集内嵌文 ...

  3. Android学习之路——简易版微信为例(三)

    最近好久没有更新博文,一则是因为公司最近比较忙,另外自己在Android学习过程和简易版微信的开发过程中碰到了一些绊脚石,所以最近一直在学习充电中.下面来列举一下自己所走过的弯路: (1)本来打算前端 ...

  4. Android学习之路——简易版微信为例(二)

    1 概述 从这篇博文开始,正式进入简易版微信的开发.深入学习前,想谈谈个人对Android程序开发一些理解,不一定正确,只是自己的一点想法.Android程序开发不像我们在大学时候写C控制台程序那样, ...

  5. Android学习之路——简易版微信为例(一)

    这是“Android学习之路”系列文章的开篇,可能会让大家有些失望——这篇文章中我们不介绍简易版微信的实现(不过不是标题党哦,我会在后续博文中一步步实现这个应用程序的).这里主要是和广大园友们聊聊一个 ...

  6. django框架简介及自定义简易版框架

    web应用与web框架本质 概念 什么是web应用程序呢? Web应用程序就一种可以通过互联网来访问资源的应用程序, 用户可以只需要用一个浏览器而不需要安装其他程序就可以访问自己需要的资源. 应用软件 ...

  7. Vue源码分析之实现一个简易版的Vue

    目标 参考 https://cn.vuejs.org/v2/guide/reactivity.html 使用 Typescript 编写简易版的 vue 实现数据的响应式和基本的视图渲染,以及双向绑定 ...

  8. 手写简易版RPC框架基于Socket

    什么是RPC框架? RPC就是远程调用过程,实现各个服务间的通信,像调用本地服务一样. RPC有什么优点? - 提高服务的拓展性,解耦.- 开发人员可以针对模块开发,互不影响.- 提升系统的可维护性及 ...

  9. 简易版自定义BaseServlet

    这几天在学Java Web,一直在思考Servlet重用的问题,就用java的反射机制实现自定义的简易版BaseServlet; 该方式有点像struts2 利用映射获取前端的参数.有兴趣的同学可以自 ...

  10. MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型

    目录 简易版CMS后台管理系统开发流程 MVC5+EF6 简易版CMS(非接口) 第一章:新建项目 MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型 MVC5+EF6 简易版CMS(非接口 ...

随机推荐

  1. CF1093E 题解

    来一发 \(O(n \sqrt n)\) 时间,\(O(n)\) 空间的分块写法. 首先建模,把 数值 \(x\) 在两个数组中出现的位置作为坐标,问题就转化为一个二维动态数点. 考虑用序列分块维护第 ...

  2. AIGC的行业发展

    1. AIGC的行业发展 AIGC(Artificial Intelligence Generated Content,人工智能生成内容)是利用人工智能技术来自动生成内容的一种新型内容创作方式.它基于 ...

  3. CosyVoice多语言、音色和情感控制模型,one-shot零样本语音克隆模型本地部署(Win/Mac),通义实验室开源

    近日,阿里通义实验室开源了CosyVoice语音模型,它支持自然语音生成,支持多语言.音色和情感控制,在多语言语音生成.零样本语音生成.跨语言声音合成和指令执行能力方面表现卓越. CosyVoice采 ...

  4. Eggjs 设置跨域请求 指定地址跨域 nodejs

    首先egg自身框架没有直接设置允许跨域请求的功能和接口,所以需要第三方包来设置跨域请求! 先安装第三方包来设置跨域,使用egg-cors // npm npm i egg-cors --save // ...

  5. 作业错题集锦(pta英文数据结构)

    A graph with 30 vertices and 40 edges must have at most twenty one connected component(s). 要计算最大连通分量 ...

  6. 12 二次打开pdf失败

    h5 安卓 iOS均出现pdf二次打开失败

  7. EasyBPM进销存之物料管理

    本文是EasyBPM平台实现进销存系列中的一篇,主要讲述物料的相关的管理. 在ERP系统中,"物料"一词有着广泛的含义,它是所有产品.半成品.在制品.原材料.配套件.协作件.易耗品 ...

  8. 第三节 JMeter安装及配置

    1.官网地址下载 (1)JDK:https://www.oracle.com/cn/java/technologies/downloads/,下载1.8版本以上的,最好下载最新版本(本次下载本次下载了 ...

  9. Java 中的一些知识点

    Java 中的一些知识点 Java 中的知识点 与C++相关 toString方法 super 与C++相关[了解的不是很多] 在Java程序中:一个方法以 ; 结尾,并且修饰符列表中有 native ...

  10. 什么是spring.factories,引入未知模块报错如何解决

    对于maven中引入其他外部包加入容器的过程,需要用到spring.factories spring.factories的作用:将自动配置类与对应的配置类集中在一起,方便springboot自动装配, ...