草庐IT

uni-app路由跳转

自由人686 2023-04-12 原文

uni-app有两种方式进行路由跳转,下面这篇文章主要给大家介绍了关于uniapp常用路由跳转的几种方式(navigateTo、redirectTo...),文中通过实例代码介绍的非常详细,需要的朋友可以参考下

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

示例代码如下:

uni.navigateTo({
	url:'./home/index'
});

注意:

页面跳转路径有层级限制,不能无限制跳转新页面跳转到 tabBar 页面只能使用  switchTab 跳转路由API的目标页面 必须是在pages.json里注册的vue页面。如果想打开web url,具体可参考【uniapp官方-路由与页面跳转】

2. uni.navigateBack(关闭当前页面,返回上一页面或多级页面)

示例代码如下:

// 在第3级页面内 navigateBack,将返回第一层页面
uni.navigateBack({
	delta: 2
});

注意:

  • 可通过 getCurrentPages()方法 获取当前的页面栈,决定需要返回几层。
  • 常用参数delta,默认为1,含义是:返回的页面数,如果 delta 大于现有页面数,则返回到首页。

3. redirectTo(关闭当前页面,跳转到其他页面)

示例代码如下:

uni.redirectTo({
	url:'./home/index'
})

注意:

  • 需要跳转的应用内非 tabBar 的页面的路径,路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 ‘path?key=value&key2=value2’
  • 转到 tabBar 页面只能使用 switchTab 跳转

4. reLaunch(关闭所有页面,跳转到其他页面)

示例代码如下:

uni.reLaunch({
	url:'./home/index'
})

注意:

  • 需要跳转的应用内页面的路径,路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 ‘path?key=value&key2=value2’
  • 转到 tabBar 页面则不能带参数
  • H5端调用uni.reLaunch之后之前页面栈会销毁,但是无法清空浏览器之前的历史记录,此时navigateBack不能返回,如果存在历史记录的话点击浏览器的返回按钮或者调用history.back()仍然可以导航到浏览器的其他历史记录。
  • 如果调用了 uni.preloadPage() 不会关闭,仅触发生命周期 onHide

5. switchTab(适用于底部导航栏之间的跳转,或者跳转到底部导航栏(跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面。))

示例代码如下:

 

uni.switchTab({
	url: './home/index'
});

注意:

  • 需要跳转的 tabBar 页面的路径(需在 pages.json 的 tabBar 字段定义的页面),路径后不能带参数

更多细节,可参考:【uniapp官方-路由与页面跳转】

补充:uni-app中的一些路由跳转区别

总结一下

navigateTo,redirectTo只能打开非tabBar页面(例如列表到详情)

switchTab只能打开tabBar页面(tabBar之间的传参等)

reLaunch可以打开任意页面

页面底部的tabBar由页面决定,就是只要时定义为tabBar的页面,底部都有tabBar,不能再App.vue里面进行页面跳转

uni.navigateTo({
url:'跳转的路径?id=xxx&alue=xxx',
})
传递的参数在跳转到的页面可以在onLoad:function(option){
option就是传递的参数
}

 

需要跳转的应用内非tabBar的页面,其实就是在pages.json里面配置的页面都不能跳转详情请看官网uni-app路由跳转

注意:

1:页面跳转路径有层级限制,不能无限制跳转新页面

2:跳转到 tabBar 页面只能使用 switchTab 跳转

uni.redirectTo({
url:'跳转的路径'
需要跳转的应用内非tabBar的页面的路径,
})

注意是关闭当前页面,跳转到应用内的某个页面,跳转到 tabBar 页面只能使用 switchTab 跳转

 

1

2

3

uni.reLaunch({

    url: 'test?id=1'

});

关闭所有页面,打开到应用内的某个页面。如果跳转的页面路径是 tabBar 页面则不能带参数。

1

2

3

4

uni.switchTab({

    url: '/pages/index/index'

    需要跳转的 tabBar 页面的路径(需在 pages.json 的 tabBar 字段定义的页面),路径后不能带参数

});

 

跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面。

1

2

3

4

5

6

7

8

9

10

11

12

// 此处是A页面

uni.navigateTo({

    url: 'B?id=1'

});

// 此处是B页面

uni.navigateTo({

    url: 'C?id=1'

});

// 在C页面内 navigateBack,将返回A页面

uni.navigateBack({

    delta: 2

});

关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages() 获取当前的页面栈,决定需要返回几层。

 

 

 

 

有关uni-app路由跳转的更多相关文章

  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 - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  3. ruby-on-rails - 每次我尝试部署时,我都会得到 - (gcloud.preview.app.deploy) 错误响应 : [4] DEADLINE_EXCEEDED - 2

    我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie

  4. ruby-on-rails - 如何重命名或移动 Rails 的 README_FOR_APP - 2

    当我在我的Rails应用程序根目录中运行rakedoc:app时,API文档是使用/doc/README_FOR_APP作为主页生成的。我想向该文件添加.rdoc扩展名,以便它在GitHub上正确呈现。更好的是,我想将它移动到应用程序根目录(/README.rdoc)。有没有办法通过修改包含的rake/rdoctask任务在我的Rakefile中执行此操作?是否有某个地方可以查找可以修改的主页文件的名称?还是我必须编写一个新的Rake任务?额外的问题:Rails应用程序的两个单独文件/README和/doc/README_FOR_APP背后的逻辑是什么?为什么不只有一个?

  5. 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

  6. 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

  7. ruby - 使用 postgres.app 在 rvm 下要求 pg 时出错 - 2

    我正在使用Postgres.app在OSX(10.8.3)上。我已经修改了我的PATH,以便应用程序的bin文件夹位于所有其他文件夹之前。Rammy:~phrogz$whichpg_config/Applications/Postgres.app/Contents/MacOS/bin/pg_config我已经安装了rvm并且可以毫无错误地安装pggem,但是当我需要它时我得到一个错误:Rammy:~phrogz$gem-v1.8.25Rammy:~phrogz$geminstallpgFetching:pg-0.15.1.gem(100%)Buildingnativeextension

  8. 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

  9. 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个字符串为所有资源设置默认格式,每行不带“默认值”散列?谢谢。

  10. ruby - cucumber 的路由问题 - 2

    我正在使用rails3和cucumber,除了这个小问题,一切都很顺利GivenIamonthe"editautomobile"pageNoroutematches{:controller=>"automobiles",:action=>"edit"}(ActionController::RoutingError)现在路径在paths.rb中设置为edit_automobile_path在routes.rb中我有汽车作为资源,我搭建了它所以请告诉我我遗漏了什么,清楚地定义了路线并且匹配,因为我运行了rake路线并看到了路线。请指出正确的方向 最佳答案

随机推荐