一、概述
在uniapp開發中,路由是非常重要的一個方面,它可以實現頁面之間的跳轉和傳遞參數。本文將介紹uniapp中路由的使用技巧,并給出具體的代碼示例。
二、uniapp路由的基本使用
在uniapp中,路由的基本使用可以通過uni.navigateTo、uni.redirectTo、uni.reLaunch、uni.switchTab等API來進行頁面跳轉。這些API的使用場景略有不同,具體使用取決于項目需求。
1.uni.navigateTo:用于打開新頁面,并保留當前頁面。適用于普通的頁面跳轉。
示例代碼:
uni.navigateTo({
url: '/pages/detail/detail?id=1'
});
2.uni.redirectTo:用于關閉當前頁面,并打開新頁面。適用于不需要返回上一頁的頁面跳轉。
示例代碼:
uni.redirectTo({
url: '/pages/home/home'
});
3.uni.reLaunch:關閉所有頁面,打開到應用內的某個頁面。適用于從其他平臺掃碼進入小程序的場景。
示例代碼:
uni.reLaunch({
url: '/pages/login/login'
});
4.uni.switchTab:跳轉到tarBar頁面,并關閉其他所有非tarBar頁面。適用于底部導航欄頁面之間的跳轉。
示例代碼:
uni.switchTab({
url: '/pages/home/home'
});
三、uniapp路由參數的傳遞
在uniapp中,可以通過URL參數的方式來進行頁面之間的數據傳遞。
1.頁面之間傳遞參數在頁面A跳轉到頁面B時,可以通過URL參數來傳遞數據。在A頁面的跳轉代碼中,通過拼接url的方式傳遞參數:
uni.navigateTo({
url: '/pages/detail/detail?id=' + id
});
2.在B頁面中,可以通過uni.$route.query來獲取參數值:
onLoad() {
console.log(this.$route.query.id);
}
頁面返回時傳遞參數
在uniapp中,可以通過uni.navigateBack方法返回上一個頁面,并通過調用上一頁頁面的onBack方法傳遞參數。具體代碼如下:
3.在A頁面中,跳轉到B頁面時,傳遞參數,并注冊上一頁頁面的onBack方法:
uni.navigateTo({
url: '/pages/detail/detail?id=' + id + '&callback=onBack'
});
4.在B頁面中,獲取參數值,并在頁面返回時調用上一頁頁面的onBack方法傳遞參數:
methods: {
goBack() {
uni.navigateBack({
delta: 1,
success: () => {
uni.getOpenerEventChannel().emit(this.asr_notify);
}
});
}
}
5.在A頁面中,注冊onBack方法并接收參數:
methods: {
onBack(data) {
console.log(data);
}
}
四、uniapp路由攔截與權限控制
在開發過程中,有時候需要對某些頁面進行權限控制,以阻止未登錄用戶訪問某些頁面。
在uniapp中,可以通過導航守衛來實現路由攔截和權限控制。具體代碼如下:
1.創建全局路由攔截器,在main.js文件中:
// 全局路由攔截器
router.beforeEach((to, from, next) => {
const token = uni.getStorageSync('token');
if (to.meta.requiresAuth && !token) { // 判斷是否需要登錄才能查看頁面
next('/pages/login/login');
} else {
next();
}
});
2.在需要進行權限控制的頁面配置路由元信息:
export default {
meta: {
requiresAuth: true // 需要登錄才能訪問
}
// 省略其他代碼...
}
通過以上操作,可以實現對需要登錄才能訪問的頁面進行權限控制,未登錄用戶將被攔截并跳轉到登錄頁。
總結:
本文介紹了uniapp中路由的基本使用方法、參數傳遞方式以及路由攔截與權限控制。通過合理的使用路由,可以實現頁面之間的跳轉和數據傳遞,提升應用的用戶體驗。