jjzjj

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

澜清___ 2023-09-03 原文

小程序跳转页面的时候经常会遇到判断是否登录,未登录跳转登录页的需求。基于此需求,做了一个路由操作拦截跳转的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>

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

  1. ruby-on-rails - Rails 3 中的多个路由文件 - 2

    Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题

  2. ruby - 通过 RVM (OSX Mountain Lion) 安装 Ruby 2.0.0-p247 时遇到问题 - 2

    我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search

  3. ruby - 安装 Ruby 时遇到问题(无法下载资源 "readline--patch") - 2

    当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub

  4. ruby - rails 3 redirect_to 将参数传递给命名路由 - 2

    我没有找到太多关于如何执行此操作的信息,尽管有很多关于如何使用像这样的redirect_to将参数传递给重定向的建议:action=>'something',:controller=>'something'在我的应用程序中,我在路由文件中有以下内容match'profile'=>'User#show'我的表演Action是这样的defshow@user=User.find(params[:user])@title=@user.first_nameend重定向发生在同一个用户Controller中,就像这样defregister@title="Registration"@user=Use

  5. ruby-on-rails - Rails 3,嵌套资源,没有路由匹配 [PUT] - 2

    我真的为这个而疯狂。我一直在搜索答案并尝试我找到的所有内容,包括相关问题和stackoverflow上的答案,但仍然无法正常工作。我正在使用嵌套资源,但无法使表单正常工作。我总是遇到错误,例如没有路线匹配[PUT]"/galleries/1/photos"表格在这里:/galleries/1/photos/1/edit路线.rbresources:galleriesdoresources:photosendresources:galleriesresources:photos照片Controller.rbdefnew@gallery=Gallery.find(params[:galle

  6. ruby-on-rails - Rails - 从命名路由中提取 HTTP 动词 - 2

    Rails中有没有一种方法可以提取与路由关联的HTTP动词?例如,给定这样的路线:将“users”匹配到:“users#show”,通过:[:get,:post]我能实现这样的目标吗?users_path.respond_to?(:get)(显然#respond_to不是正确的方法)我最接近的是通过执行以下操作,但它似乎并不令人满意。Rails.application.routes.routes.named_routes["users"].constraints[:request_method]#=>/^GET$/对于上下文,我有一个设置cookie然后执行redirect_to:ba

  7. ruby-on-rails - 如何在 Rails 中设置路由的默认格式? - 2

    路由有如下代码:resources:orders,only:[:create],defaults:{format:'json'}resources:users,only:[:create,:update],defaults:{format:'json'}resources:delivery_types,only:[:index],defaults:{format:'json'}resources:time_corrections,only:[:index],defaults:{format:'json'}是否可以使用1个字符串为所有资源设置默认格式,每行不带“默认值”散列?谢谢。

  8. ruby - 在 ASP 页面上 Mechanize 中断 - 2

    require'mechanize'agent=Mechanize.newlogin=agent.get('http://www.schoolnet.ch/DE/HomeDE.htm')agent.clicklogin.link_withtext:/Login/然后我得到Mechanize::UnsupportedSchemeError。 最佳答案 Mechanize不支持javascript但您可以将搜索字段添加到表单并为其分配搜索词并使用mechanize提交表单form=page.forms.firstform.add_fie

  9. ruby-on-rails - prawnto 显示新页面时不会中断的表格 - 2

    我有可变数量的表格和可变数量的行,我想让它们一个接一个地显示,但如果表格不适合当前页面,请将其放在下一页,然后继续。我已将表格放入事务中,以便我可以回滚然后打印它(如果高度适合当前页面),但我如何获得表格高度?我现在有这段代码pdf.transactiondopdf.table@data,:font_size=>12,:border_style=>:grid,:horizontal_padding=>10,:vertical_padding=>3,:border_width=>2,:position=>:left,:row_colors=>["FFFFFF","DDDDDD"]pdf.

  10. ruby - 每个页面上的 Jekyll 分页 - 2

    据我们所知,Jekyll默认分页仅支持index.html,我想创建blog.html并在那里包含分页。有什么解决办法吗? 最佳答案 如果您创建一个名为/blog的目录并在其中放置一个index.html文件,那么您可以向_config.yml表示paginate_path:"blog/page:num"。不是使用根文件夹中的默认index.html作为分页器模板,而是使用/blog/index.html。分页器将根据需要生成类似/blog/page2/和/blog/page3/的页面。这将使您到达yourwebsite.com/b

随机推荐