微信小程序 跳转页面经常会遇到判断是否登录情况。基于此需求,做了一个路由跳转拦截的jump组件

小程序跳转页面的时候经常会遇到判断是否登录,未登录跳转登录页的需求。基于此需求,做了一个路由操作拦截跳转的jump组件

自定义组件

组件代码非常简单
在根目录创建components目录
在components目录新建jump目录
在jump目录新建四个文件
index.js
index.json
index.wxml
index.wxss

index.js内容

//引入不需要登录的path路径
//routerConfig.js的内容如下
/*
const noLoginPath = [
    '/pages/index/index',
    '/pages/article/list',
    '/pages/article/list'
]
module.exports = {
    noLoginPath: noLoginPath
}
*/
import {
    noLoginPath
} from '../../router/routerConfig.js';
Component({
    properties: {
        url: {
            type: String,
            value: ''
        },
        type: {
            type: String,
            value: 'navigateTo'
        },
        delta: {
            type: Number,
            value: 1
        }
    },

    /**
     * 组件的初始数据
     */
    data: {},
    methods: {
        route: function () {
            this.jump()
        },
        jump: function () {
            let token = wx.getStorageSync('token')
            let url = this.data.url
            let type = this.data.type
            //url是否跳转的tabbar页面,可以自行书写判断代码,如果是type = 'switchTab';否则就自行传递type的值为switchTab;
            //type类型有navigateTo(默认)、redirectTo、switchTab、reLaunch、navigateBack
            //delta参数只有后退才用得着,后台层数。
            var n_url_index = url.lastIndexOf("\?");
            var n_url = url.substring(0, n_url_index);
            //登录权限验证
            if (!noLoginPath.includes(n_url) && !token) {
                //跳转登陆页
                wx.navigateTo({
                    url: '/pages/user/login'
                })
                return
            }
            if (type == 'navigateTo') {
                wx.navigateTo({
                    url: url
                })
            } else if (type == 'redirectTo') {
                wx.redirectTo({
                    url: url
                })
            } else if (type == 'switchTab') {
                wx.switchTab({
                    url: url
                })
            } else if (type == 'reLaunch') {
                wx.reLaunch({
                    url: url
                })
            } else if (type == 'navigateBack') {
                wx.navigateBack({
                    delta: this.data.delta
                })
            }
        }
    }
})

index.json文件内容

{
    "component": true,
    "usingComponents": {
    }
}

index.html文件内容

<view catchtap="route" url="{{url}}" type="{{type}}" delta="{{delta}}"><slot /></view>

index.wxss文件内容

这个样式文件内容空就行

使用方法

<jump class="item" url="/pages/product/show">我要跳转了!</jump>
<jump class="item" url="/pages/index/index" type="switchTab">我要去tabbar页面</jump>
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

澜清___

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值