uni-app 路由navigate
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的更多相关文章
- uni app中使用自定义图标库
项目中难免会用到自定义图标,那在uni app中应该怎么使用呢? 首先, 将图标目录放在static资源目录下: 在main.js中引入就可以全局使用了 import '@/static/icon-o ...
- tornado实现不同app路由分发
tornado实现app路由分发 from tornado import ioloop from tornado.httpserver import HTTPServer from tornado.w ...
- uni app 零基础小白到项目实战-1
uni-app是一个使用vue.js开发跨平台应用的前端框架. 开发者通过编写vue.js代码,uni-app将其编译到Ios,android,微信小程序等多个平台,保证其正确并达到优秀体验. Uni ...
- APP路由还能这样玩
本文主要讲述一种设计思路,组件化架构市面上已经有很多大厂成熟的方案,但是在组件化过程中,偶尔会遇到2个独立业务子模块间没有相互引用,也需要能直接调用对方的功能,因此我想到通过方法路由来解决,如果还有疑 ...
- [react]react创建app,路由,mobx 全教程
1.创建app, npx create-react-app my-app Cmd Copy 2.进入项目目录 cd my-app Cmd Copy 3.启用配置文件(默认是不开启配置文件的) ya ...
- uni app以及小程序 --环境搭建以及编辑器
https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html 根据以上网页下载自己电脑相应的版本的微信开发者工具(目录 ...
- uni app canvas 不生效
canvas 创建canvas绘图上下文. <canvas style="width: 300px; height: 200px;" canvas-id="firs ...
- uni app 零基础小白到项目实战2
<template> <scroll-view v-for="(card, index) in list" :key="index"> ...
- uni app 零基础小白到项目实战
$emit 子组件传给父组件 $ref 父组件操作子组件 公用模板 uni-app全局变量的几种实现方法 const websiteUrl = 'http' const now = Date.now ...
随机推荐
- python中经常使用的字典内建函数
1.len(mapping) 返回映射的长度(键-值对的个数) 2.hash(obj) 返回obj的哈希值 >>> myDict = {'na ...
- php 在同一个表单中加入和改动
大家写站点的时候可能都会遇到这样的情况,就是写一个表单,这个表单是用来加入一篇文章的,我们屁颠屁颠的在后台接收数据,然后存入数据库.如今有个问题.当你要对该文章进行改动的时候,你是怎么处理的? 我的方 ...
- PDF.NET支持最新的SQLite数据库
最近项目中用到了SQLite,之前项目中用的是PDF.NET+MySQL的组合,已经写了不少代码,如果能把写好的代码直接用在SQLite上就好了,PDF.NET支持大部分主流的数据库,这个当然可以,只 ...
- c26---文件包含include
// // main.c // 文件包含 #include <stdio.h> // 函数可以重复声明, 但不能重复定义 void test(); void test(); void te ...
- Spring整合JUnit4测试使用注解引入多个配置文件
转自:https://kanpiaoxue.iteye.com/blog/2151903 我们使用spring写junit单测的时候,有的时候我们的spring配置文件只有一个.我们在类的注释上面会这 ...
- [javaEE] Eclipse 默认设置的换行长度
eclipse 默认设置的换行长度, 格式化代码后,经常换行,非常难看. 1.Java代码 打开Eclipse的Window菜单,然后 Preferences->Java->Code St ...
- Linux Shell Scripting Cookbook 读书笔记 4
正则, grep 1. 正则表达式 正则表达式 描述 示例 ^ 行起始标记 ^hell匹配以hell开头的行 $ 行尾标记 test$匹配以test结尾的行 . 匹配任意一个字符 hell ...
- python课程设计笔记(五) ----Resuests+BeautifulSoup (爬虫入门)
官方参考文档(中文版): requests:http://docs.python-requests.org/zh_CN/latest/user/quickstart.html beautifulsou ...
- Linux学习笔记(Redhat)
一.开始 linux平台上的开发 vi.gcc.gdb.make.jdk.tomcat.mysql. linux基本操作 c语言功底<c专家编程>和java语言 学习unix高级编程 &l ...
- RabbitMQ学习之集群消息可靠性测试
之前介绍过关于消息发送和接收的可靠性:RabbitMQ学习之消息可靠性及特性 下面主要介绍一下集群环境下,rabbitmq实例宕机的情况下,消息的可靠性.验证rabbitmq版本[3.4.1]. 集群 ...