在实践运用中,经常需要在路由跳转时判断是否需要登录权限,页面跳转时,添加加在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. python3 中的装饰器总结

    前言 python3 中有很多好用的装饰器,本编文章作为个人笔记使用,随时更新. 正文 1. @dataclass 内容来源:chatgpt3.5 @dataclass是一个装饰器,用于给类提供自动生 ...

  2. AVCODEC_MAX_AUDIO_FRAME_SIZE 未定义标识符

    调用ffmpeg接口时,出现了这个问题:未定义标识符"AVCODEC_MAX_AUDIO_FRAME_SIZE" 在网上搜了一下,可能的解决方案是: 添加: #define AVC ...

  3. MySql常用日期时间查询

    -- 某一天所在周的第一天: -- 我们知道国外的星期的第一天是从星期天开始的,所以DAYOFWEEK('2017-3-10')函数的第一天是星期天: SELECT CASE WHEN DAYNAME ...

  4. opc ua设备数据 转MQTT项目案例

    目录 1 案例说明 1 2 VFBOX网关工作原理 1 3 准备工作 2 4 配置VFBOX网关采集OPC UA的数据 2 5 用MQTT协议转发数据 4 6 配置参数说明 4 7 上报内容配置 5 ...

  5. THM-Skynet-Writeup

    通过学习相关知识点:攻破Linux目标机器并完成提权操作. 部署并渗透目标机器 step1 使用Nmap扫描端口 nmap -p- -sC -sV -T4 -v 10.10.164.81 139/44 ...

  6. 全网最适合入门的面向对象编程教程:15 类和对象的 Python 实现-__slots__魔法方法

    全网最适合入门的面向对象编程教程:15 类和对象的 Python 实现-__slots__魔法方法 摘要: 本文主要介绍了 Python 中创建自定义类时不同实例属性保存的基本原理和缺点,介绍了__s ...

  7. redis基本数据结构-字符串

    reids字符串数据结构相关命令    序号 命令 命令实例 意义    1 set key value set bar 1 设置key为bar的值为"1"   2  incr k ...

  8. Nuxt.js头部魔法:轻松自定义页面元信息,提升用户体验

    扫描二维码关注或者微信搜一搜:编程智域 前端至全栈交流与成长 useHead 函数概述 useHead是一个用于在 Nuxt 应用中自定义页面头部属性的函数.它由Unhead库提供支持,允许开发者以编 ...

  9. django 信号 新增和删除信的合用

    from django.db.models.signals import post_save, post_delete from django.dispatch import receiver fro ...

  10. 【SQL】Lag/Rank/Over窗口函数揭秘,数据分析之旅

    七月的夏日,阳光如火,但小悦的心中却是一片清凉与激情.在数据分析项目组的新岗位上,她仿佛找到了自己新的舞台,这里让她得以将深厚的后端技术实力与数据分析的精髓深度融合.每天,她都沉浸在业务需求的分析与数 ...