點擊藍字 ╳ 關注我們
開源項目 OpenHarmony是每個人的 OpenHarmony
孫澳
OpenHarmony知識體系組
簡介
Arouter是一款適用于OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)的輕量高效的頁面路由工具,相比原生的路由方案,Arouter更有優勢。傳統的路由方案使用顯示Intent和隱式Intent進行跳轉,會存在一些問題。使用顯式Intent耦合度過高,而使用隱式Intent集中式管理Path會導致協作困難。Arouter采用自定義的路由方案,通過解析標準URL進行跳轉,避免了直接依賴的問題。使用分布式管理頁面配置,解決了集中式管理Path的問題,整個路由跳轉過程更加透明,具有更好的擴展性。Arouter相比原生路由方案,具有更低的耦合度、更好的協作性和控制攔截能力,同時采用分布式管理頁面配置,提供了更好的擴展性,目前支持SDK:OpenHarmony API Version 10版本。效果圖
?使用說明
Arouter支持以下功能:
●支持頁面間路由跳轉;
●支持帶參數跳轉及回調;
●支持配置跳轉攔截器;
●支持預處理跳轉與否;
路由跳轉
1.不傳參跳轉通過Arouter.getInstance()創建路由對象,使用鏈式調用方法 build('')配置跳轉的頁面,navigation() 方法進行頁面跳轉。
import {Arouter} from "@ohos/arouteronactivityresult";
Arouter.getInstance()
.build("--/--") //需要跳轉的地址
.navigation()
2.傳參跳轉在不傳參跳轉的基礎上,跳轉之前通過withParams()進行參數配置。
import {Arouter} from "@ohos/arouteronactivityresult";
Arouter.getInstance()
.build("--/--") //需要跳轉的地址
.withParams({index:"--"})
.navigation()
3.路由回調路由回調需要配合NavigationCallback接口進行,在路由前的頁面實現NavigationCallback接口
import {NavigationCallback} from '@ohos/arouteronactivityresult'
var callback:NavigationCallback = {
onInterrupt(postcard){},
onArrival(postcard){},
onActivityResult(data){}
}
然后將callback傳入 .navigationWithCallback()中進行跳轉
import {Arouter} from "@ohos/arouteronactivityresult";
Arouter.getInstance()
.build("--")//需要跳轉的地址
.navigationWithCallback(callback)
在目標頁面的onPageShow()生命周期中調用getPostcard()方法獲取到指定的postcard
import router from '@ohos.router';
if (postcard == null) {
postcard = Arouter.getInstance().getPostcard(router.getState().path+router.getState().name);
}
使用 postcard.getNavigationCallback() 方法調用對應的回調方法,即可回調源頁面實現的方法
postcard.getNavigationCallback().onActivityResult(params)
路由攔截
1.配置攔截器在攔截器中的process()方法中實現頁面的攔截,通過interceptorCallback.onInterrupt()中斷跳轉,interceptorCallback.onContinue()繼續跳轉。
import {Postcard,IInterceptor,InterceptorCallback} from '@ohos/arouteronactivityresult';
var iInterceptor:IInterceptor= {
process(postcard:Postcard, interceptorCallback:InterceptorCallback) {
// 選擇攔截的頁面,若跳轉時有該路徑則進行攔截提示,若沒有則直接跳轉
if (Postcard.getUri() == 'pages/transit') {
// 選擇彈框
AlertDialog.show(
{
message: '被攔截了,點擊繼續跳轉',
primaryButton: {
value: '取消',
action: () => {
// 中斷跳轉
interceptorCallback.onInterrupt(postcard)
}
},
secondaryButton: {
value: '繼續',
action: () => {
// 繼續跳轉
interceptorCallback.onContinue(postcard);
}
},
}
)
} else {
// 繼續跳轉
interceptorCallback.onContinue(postcard);
}
}
}
2.注冊攔截器
import {registerInterceptor} from '@ohos/arouteronactivityresult';
registerInterceptor(iInterceptor);
3.移除攔截器
import {unregisterInterceptor} from '@ohos/arouteronactivityresult';
unregisterInterceptor()
4.配置綠色通道在跳轉前使用.setGreenChannel()方法跳過攔截(true:跳過攔截)。
Arouter.getInstance()
.build("--/--")//需要跳轉的地址
.setGreenChannel(true)
.navigation()
5.配置預處理跳轉與否預處理:實現 PretreatmentService 接口中 onPretreatment 方法,并返回一個Boolean值(true:繼續跳轉,false:不跳轉)。
import {PretreatmentService} from '@ohos/arouteronactivityresult';
var pretreatmentService:PretreatmentService = {
onPretreatment(postcardboolean{
return true
}
}
在跳轉前調用.setPretreatmentService() 方法,將 pretreatmentService傳入 setPretreatmentService()方法中完成預處理功能。
Arouter.getInstance()
.build(this.router)
.setPretreatmentService(pretreatmentService)
.navigationWithCallback(callback)
接口說明
Arouter
?回調接口
?下載安裝
ohpminstall@ohos/arouteronactivityresult
源碼鏈接
https://gitee.com/openharmony-tpc/arouter-api-onActivityResult
原文標題:【開源三方庫】Arouter:一款輕量、高效的頁面路由工具
文章出處:【微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉載請注明出處。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
鴻蒙
+關注
關注
60文章
2963瀏覽量
45886 -
OpenHarmony
+關注
關注
33文章
3952瀏覽量
21098
原文標題:【開源三方庫】Arouter:一款輕量、高效的頁面路由工具
文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
熱點推薦
釘釘正式開源HarmonyOS圖片編輯組件
近日,由釘釘團隊自主研發的“HarmonyOS圖片編輯組件”正式上線OpenHarmony三方庫中心倉并開源。作為一款填補鴻蒙社區圖像處理領域空白的重量級組件,該方案基于Harmony
SEGGER Ozone調試器支持第三方調試工具
SEGGER強大的Ozone調試器和性能分析器,長期以來一直深受J-Link和J-Trace用戶的信任,現在可以支持第三方調試工具了。
知乎開源“智能預渲染框架” 幾行代碼實現鴻蒙應用頁面“秒開”
近日,知乎在Gitee平臺開源了其自研的鴻蒙“智能預渲染框架”,并將該框架的Har包上架到OpenHarmony三方庫中心倉。該框架在鴻蒙平臺首創“智能預渲染”技術,旨在破解應用復雜頁面
貨拉拉開源兩款三方庫,為鴻蒙應用高效開發貢獻力量
、可擴展的通用工具,持續提升鴻蒙應用的創新體驗與開發效率。 在這一生態共建的浪潮中,貨拉拉積極貢獻了其在鴻蒙應用開發過程中的寶貴經驗與技術積累,開源了兩款實用三方
飛書富文本組件庫RichTextVista開源
近日,飛書正式將其自研的富文本組件庫 RichTextVista(簡稱“RTV”)開源,并上線OpenHarmony 三方庫中心倉。該組件以領先的性能、流暢的渲染體驗與高度的開放性,為
如何集成第三方支付API到電商網站
? 在電商網站中,集成第三方支付API是確保交易安全、提升用戶體驗的關鍵步驟。本文將逐步指導您完成整個流程,從選擇支付提供商到上線后的監控。文章結構清晰,包含代碼示例和實用建議,幫助您高效實現支付
天合跟蹤獲得DNV第三方風洞測試審查報告
第三方審核。這不僅是三方合作的里程碑,更是中國光伏跟蹤支架技術邁向國際高標準的重要一步。DNV對此研究成果的專業性以及可靠性進行了全面審查。
HarmonyOS入門指南
OpenHarmony三方庫中心倉 堅果派 童長老倉庫中心 鴻蒙寶典 一本快速學習鴻蒙的電子書 promises-book JavaScript Promise迷你書。 harmony-utils
DialogHub上線OpenHarmony開源社區,高效開發鴻蒙應用彈窗
三方庫,只需要一兩個配置項就可以輕松解決上述問題。
“DialogHub”可高效地解決以下3點問題:1、上文提到的焦點、手勢、動畫等交互問題;2、彈窗需要與UI進行解耦。3、彈窗需要具備復用能力
發表于 04-03 17:30
開源啦!!!基于鴻蒙ArkTS封裝的圖表組件《McCharts》,大家快來一起共創
及時反饋
開源代碼管理管理開源代碼我們選擇了GitHub,比較主流,后續也會放開其他的。而開發完的組件我們使用的是OpenHarmony三方庫中心倉來管理,鴻蒙目前也只支持這個中心倉下
發表于 03-15 15:21
Get這個秘籍,鴻蒙原生應用頁面滑動絲滑無比
Prefetcher接口監聽數據項的變化,動態控制資源的下載與取消,并結合ImageKnife三方庫實現具體的預取和緩存管理。這種動態預加載策略突破了以往解決方案的局限性,提供了一種更加智能、
發表于 03-06 14:41
鴻蒙文件傳輸三方庫上線開源鴻蒙社區 十行代碼實現大文件高速傳輸
近日,華為在OpenHarmony社區上線了“super_fast_file_trans”文件傳輸三方庫(以下簡稱“SFFT”)。這一三方庫的推出,為開發者提供了
發表于 03-06 10:29
【開源三方庫】Arouter:一款輕量、高效的頁面路由工具
評論