区别:
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();