uni-app  页面 路由navigate

uni-app 是一个使用 Vue.js 开发跨平台应用的前端框架,开发者编写一套代码,可编译到iOS、Android、H5、小程序等多个平台。

公司最近在写APP应用到了uni-app  我在写的时候发现了一些路由跳转的问题 。 先说一下关于路由的各个接口把,各参数参数说明详见官网https://uniapp.dcloud.io/api/router?id=navigateto

1.uni.navigateTo(OBJECT)  保留当前的页面跳转到应用内的某个页面,使用uni.navigateBack 可以返回到原页面

  

  通过参数URL进行跳转 如果是跳转非tabBar页面的路径,路径后面是可以携带参数的,参数与路径之间使用?分隔参数建与参数值用=相连,不同参数用&分隔,,,,传递后的参数可以在目标页面的onload函数可得到传递的参数

  

toSuccessBuy() {
  uni.navigateTo({
url: '/pages/buytest/SuccessBuy' //跳转到pages下buytest文件下面的SuccessBuy.vue文件
  })
}

  但是要注意:目标页面必须是在pages.json里面注册的vue页面,如果要是想打开web url,在app平台可以使用plus.runtime.openURL或web-view组件

           不能在APP.vue里面进行跳转

           跳转到tabBar的时候不能使用uni.navigateTo进行跳转,只能使用switchTab进行跳转

2. uni.redirectTo(OBJECT) 关闭当前页面,跳转到应用内的某个页面。(不可以使用uni.navigateBack返回,使用uni.redirectTo时当前页面已经被关闭,无法返回,但是可以返回到当前页面的上一个页面 )

toThree(){                                           上一级页面 One.vue
uni.redirectTo({                    当前页面 Two.vue
url:'/pages/buytest/Three'            目标页面 Three.vue
})                                   从当前Two跳转到目标页面Three,Two页面使用uni.redirect关闭当前Two页面并跳转到Three,Three返回时Two页面已经关闭,返回到One页面
}

3.uni.reLaunch(OBJECT) 关闭所有页面,打开到应用的某个页面  (他与uni.navigateTo 的区别就是,uni.reLaunch关闭所有页面进入新的页面 ,uni.navigateTo是保留当前页面并跳入最新页面 ,)

toBuyTestOne(){
  uni.reLaunchTo({
    url:'/pages/buytest/BuyTestOne'
  })
},

4.uni.switchTab(OBJECT)  跳转到tabBar页面,并关闭其他所有非tabBar页面     (设置url路径时,需要跳转的tabBar页面的路径必须是在pages.json的tabBar字段定义的页面,并且!!!路径的后面不可以携带参数)

//pages.json
{
"tabBar": {
"list": [{
"pagePath": "pages/index/index",
"text": "首页"
},{
"pagePath": "pages/other/other",
"text": "其他"
}]
}
}
//other.vue
uni.switchTab({
url: '/pages/index/index'
});

5. uni.navigateBack(OBJECT)  关闭当前页面,返回上一级或者多级页面。可通过getCurrentPages()获取当前的页面栈,决定返回几层

  重点来咯!!!

  我在做这个页面返回的时候就遇到了一个几乎接近于死循环的问题,我用uni.navigateTo跳转到下一个页面A->B->C->A这样连续跳转五六次以后,想在跳到A页面的时候直接退出到别的页面,但是使用uni.navigateBack返回时,会连续反方向返回五六次,简而言之就是怎么来的怎么回去,但是发现根本达不到自己想要的效果,若是使用uni.navigateTo定向跳转的时候,会发现返回的时候是一样的,返回的上一个页面,甚至于更啰嗦,后来我仔细翻了翻文档,发现了多级返回这个东东,但是由于客户的不断点击,自己并不知道客户到底点击了多少层,以至于我就又发现了getCurrentPages()这个法宝,它是用来获取到当前页面的页面栈,而你想要回到第几层页面时,用获取到的页面栈的层数减去想回到的第几层就可以了,上代码

back() {
let pages = getCurrentPages(); // 获取当前页面栈层数 例如16
let backPages = pages.length - 1; // 当前层数减一获取要跳转的页面的层数 15
uni.navigateBack({
delta: backPages //跳转十五层 回到第一层页面
})
} ,

  参数delta :类型为number 指的是返回的页面数,如果delta大于现有的页面数,会直接返回首页的

  这个是限于你的返回按钮是自己定义的那种,如果你选择了uni-app默认的返回,请加上onBackPress()生命周期函数,用来对返回页面进行监听

  这样就可以达到效果了,想返回几层就返回几层,想跳转到哪个页面就跳到到哪个页面,诶~,妈妈再也不用担心我跳不过去了~~~

最后   请注意!

    1.navigateTo,redirectTo 只能打开非tabBar页面

    2.switchTab 只能打开tabBar页面

    3.reLaunch 可以打开任意页面

    

uni-app 路由navigate的更多相关文章

  1. uni app中使用自定义图标库

    项目中难免会用到自定义图标,那在uni app中应该怎么使用呢? 首先, 将图标目录放在static资源目录下: 在main.js中引入就可以全局使用了 import '@/static/icon-o ...

  2. tornado实现不同app路由分发

    tornado实现app路由分发 from tornado import ioloop from tornado.httpserver import HTTPServer from tornado.w ...

  3. uni app 零基础小白到项目实战-1

    uni-app是一个使用vue.js开发跨平台应用的前端框架. 开发者通过编写vue.js代码,uni-app将其编译到Ios,android,微信小程序等多个平台,保证其正确并达到优秀体验. Uni ...

  4. APP路由还能这样玩

    本文主要讲述一种设计思路,组件化架构市面上已经有很多大厂成熟的方案,但是在组件化过程中,偶尔会遇到2个独立业务子模块间没有相互引用,也需要能直接调用对方的功能,因此我想到通过方法路由来解决,如果还有疑 ...

  5. [react]react创建app,路由,mobx 全教程

    ​ 1.创建app, npx create-react-app my-app Cmd Copy 2.进入项目目录 cd my-app Cmd Copy 3.启用配置文件(默认是不开启配置文件的) ya ...

  6. uni app以及小程序 --环境搭建以及编辑器

    https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html 根据以上网页下载自己电脑相应的版本的微信开发者工具(目录 ...

  7. uni app canvas 不生效

    canvas 创建canvas绘图上下文. <canvas style="width: 300px; height: 200px;" canvas-id="firs ...

  8. uni app 零基础小白到项目实战2

    <template> <scroll-view v-for="(card, index) in list" :key="index"> ...

  9. uni app 零基础小白到项目实战

    $emit 子组件传给父组件 $ref 父组件操作子组件 公用模板 uni-app全局变量的几种实现方法 const websiteUrl = 'http' const now = Date.now ...

随机推荐

  1. POJ 2954

    PICK定理:格子上的多边形面积=边界上格子点数/2+内部点数-1. 利用叉积求出面积.再枚举边上的点数.然后按公式求出内部点数就可以了. 关于PICK:http://blog.csdn.net/i_ ...

  2. Dagger2使用攻略

    Dagger2使用攻略 Dagger 2 是 Square 的 Dagger 分支,是一种依赖注入框架.眼下由 Google 接手进行开发,Dagger2是使用代码自己主动生成和手写代码来实现依赖注入 ...

  3. HDU 2717

    Catch That Cow Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  4. POJ3126——Prime Path

    非常水的一道广搜题(专业刷水题). .. #include<iostream> #include<cstdio> #include<queue> #include& ...

  5. redis之Hash存储与String存储内存消耗对照

    存储对象User String存储方式: SET media:1155315 939 GET media:1155315 > 939 String结构存储该对象 User243 243600 存 ...

  6. HDU 2027 汉字统计

    汉字统计 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  7. 一张游览PHP内核迷宫的藏宝图

    PHP内核就像一个迷宫,假设没有一个纵览全局的图,仅仅是面对当中的一个点,就会像进了迷宫一样,走着走着就走到了死胡同.在这个迷宫里转悠了非常久之后,近期得到了一张PHP藏宝图.然后看着这张图去游览PH ...

  8. Getting started with ASP.NET Core MVC and Visual Studio

    This tutorial will teach you the basics of building an ASP.NET Core MVC web app using Visual Studio ...

  9. 【NOIP 2004】 虫食算

    [题目链接] https://www.luogu.org/problemnew/show/P1092 [算法] 搜索 + 剪枝 直接搜索显然会超时,考虑剪枝 1 : 优化搜索顺序 2 : 假设我们已经 ...

  10. [Pulgin] 前端上传组件Plupload使用指南

    我之前写过一篇文章<文件上传利器SWFUpload使用指南>,里面介绍了上传组件SWFUpload的使用方法,但现在随着html5技术的逐渐推广和普及,再去使用以flash为上传手段的SW ...