Navigator和导航栏之间的区别以及用法场景的分析

简介: 区别:   1.navigator是属于小程序组件中的,导航栏是属于小程序API中的   2.navigator组件是用在axml页面中跳转的导航,它有4种类型(见下表);导航栏API是用在js中实现页面跳转的   3.

区别:

   1.navigator是属于小程序组件中的,导航栏是属于小程序API中的

   2.navigator组件是用在axml页面中跳转的导航,它有4种类型(见下表);导航栏API是用在js中实现页面跳转的

   3.navigator是通过给属性open-type赋值的方法来实现其对应的跳转功能,导航栏是通过封装好的API中方法(如下表)实现其对应的功能

 

关联:

navigator的属性open-type对应导航栏API中的相应功能,参考该表理解  

      navigator(open-type)               导航栏
      navigate(默认值)        对应my.navigateTo的功能
      redirect        对应my.redirectTo的功能
      switchTab        对应my.switchTab的功能 
      navigateBack        对应my.navigateBack的功能

 

建议:

如果需要在跳转做其他逻辑处理建议使用导航栏API,不做的话建议使用navigator组件

 

用法场景:

1.my.navigateTo:

保留当前页面,跳转到应用内的某个指定页面,路径后可带参数,参数规则如下:路径与参数之间使用?分隔,参数键与参数值用=相连,不同参数必须用&分隔;如 path?key1=value1&key2=value2

使用 my.navigateBack 可以返回到原页面;页面最大深度为10,即可连续调用 10 次 navigateTo

示例代码:

my.navigateTo({
  url: 'new_page?count=100'
})

 

2.my.redirectTo:

关闭当前页面,跳转到应用内的某个指定页面,路径后可带参数,参数规则如下:路径与参数之间使用?分隔,参数键与参数值用=相连,不同参数必须用&分隔;如path?key1=value1&key2=value2

示例代码:

my.redirectTo({
  url: 'new_page?count=100'
})

 

3.my.switchTab:

跳转到指定 tabBar 页面,并关闭其他所有非 tabBar 页面;跳转的页面的路径需要在app.json的tabBar中声明的页面且路径后不能带参数

示例代码:

// app.json
{
  "tabBar": {
    "items": [{
      "pagePath": "home",
      "name": "首页"
    },{
      "pagePath": "user",
      "name": "用户"
    }]
  }
}
my.switchTab({
  url: '/home'
})

 

4.my.navigateBack:

关闭当前页面,返回上一级或多级页面。可通过 getCurrentPages 获取当前的页面栈信息,决定需要返回几层;返回的页面数,如果 delta 大于现有页面数,则返回到首页

示例代码:

// 注意:调用 navigateTo 跳转时,调用该方法的页面会被加入堆栈,
// 而 redirectTo 方法则不会。见下方示例代码

// 此处是one页面
my.navigateTo({
  url: 'two?pageId=10000'
})

// 此处是two页面
my.navigateTo({
  url: 'one?pageId=99999'
})

// 在three页面内 navigateBack,将返回one页面
my.navigateBack({
  delta: 2
})

my.navigateTo 和 my.redirectTo 不允许跳转到 tabbar 页面;如果需要跳转到 tabbar 页面,请使用 my.switchTab

 

5.my.reLaunch:

关闭当前所有页面,跳转到应用内的某个指定页面。如果页面不为 tabbar 页面则路径后可以带参数。参数规则如下:路径与参数之间使用?分隔,参数键与参数值用=相连,不同参数必须用&分隔;如path?key1=value1&key2=value2

示例代码:

my.reLaunch({
  url: '/page/index'
})

 

6.my.setNavigationBar:

设置导航栏文字及样式,导航栏底部边框颜色,支持十六进制颜色值。若设置了 backgroundColor,则borderBottomColor 不会生效,默认会和 backgroundColor 颜色一样

示例代码:

my.setNavigationBar({
  title: '你好',
  backgroundColor: '#108ee9',
  success() {
    my.alert({
      content: '设置成功', 
    });
  },
  fail() {
    my.alert({
      content: '设置是失败',
    });
  },
});

 

7.my.showNavigationBarLoading:

显示导航栏 loading

示例代码:

my.showNavigationBarLoading();

 

8.my.hideNavigationBarLoading:

隐藏导航栏 loading

示例代码:

my.hideNavigationBarLoading();

 

 

目录
相关文章
|
监控 JavaScript 索引
07avalon - 监控数组与非监控属性
07avalon - 监控数组与非监控属性
51 0
|
4月前
|
小程序 JavaScript 前端开发
【微信小程序-原生开发】实用教程06-轮播图、分类页签 tab 、成员列表(含Tdesign升级,切换调试基础库,设置全局样式,配置组件按需注入,添加图片素材,wx:for,生命周期 onLoad)
【微信小程序-原生开发】实用教程06-轮播图、分类页签 tab 、成员列表(含Tdesign升级,切换调试基础库,设置全局样式,配置组件按需注入,添加图片素材,wx:for,生命周期 onLoad)
148 0
|
存储 小程序 索引
小程序跨页面传递参数的几种方式
小程序跨页面传递参数的几种方式
329 0
|
6月前
|
移动开发 前端开发 JavaScript
使用JavaScript实现一个复杂功能:自定义拖拽排序列表
使用JavaScript实现一个复杂功能:自定义拖拽排序列表
|
6月前
|
存储 JavaScript 前端开发
JS中让二级菜单栏一直保持展开状态,页面跳转也不会改变
JS中让二级菜单栏一直保持展开状态,页面跳转也不会改变
|
6月前
|
JavaScript
js实现跨浏览器tab选项卡页通信、传参,监听localStorage.变量的实时变化,实现打开多个浏览器页面窗口相互可以传参通信
js实现跨浏览器tab选项卡页通信、传参,监听localStorage.变量的实时变化,实现打开多个浏览器页面窗口相互可以传参通信
|
JavaScript
uniapp制作app顶部原生导航栏输入框的内容自动变化
uniapp制作app顶部原生导航栏输入框的内容自动变化
289 0
uniapp制作app顶部原生导航栏输入框的内容自动变化
|
前端开发 Android开发 iOS开发
Andorid分组Item顶部悬停 + 交互同步
  项目中某些页面中的分组数据的顶部需要悬停,并且悬停的View要与ItemView中同样布局的View进行操作同步,也就是相互同步。大家都知道,Android中有"The specified child already has a parent. You must call removeView() on the child's parent first."这个异常,意味着同一个View对象不能有两个Parent。我们就不能简单粗暴的将同一个View对象添加进两个parent了,需要另谋出路。
|
前端开发 开发者
评论列表案例-创建 CmtList 组件并渲染基本页面结构|学习笔记
快速学习评论列表案例-创建 CmtList 组件并渲染基本页面结构
147 0
评论列表案例-创建 CmtList 组件并渲染基本页面结构|学习笔记