場景:
在沒有登錄的時候,一打開app 就要顯示登錄頁面,如果登錄過則顯示第一個tab頁面
由於底部的tab最多只能有五個,並且五個都已經占用,沒有多余的tab分給登錄頁面,
如果將登錄放在二級頁面,那么,ios下屏幕上的左滑動,會返回到上一層,安卓的物理返回鍵,也會返回到上一層,無法做到登錄頁面視覺上是第一個頁面
解決方案有兩種
1、將登錄做成一個組件頁面,放在pages 配置的首頁上,首頁onload 時就判斷登錄態,根據條件顯示是否為登錄組件
2、將登錄頁面放在二級頁面,並且pages.json 里面配置該頁面不能左滑動 "popGesture": "none" ,同時,在頁面的 onBackPress 事件中
onBackPress(e){ if(e.from=='backbutton'){ //安卓下物理返回鍵無效 return true; } }
就可以做到登錄頁面視覺上為第一級頁面,在首頁中判斷登錄態,然后reLauch到登錄頁面,登錄后調用switchTab切換到首頁即可
注意:
退出登錄的時候,如果只是清掉登錄態,將頁面跳轉(navigateTo)到登錄頁面,或者是switchTab到放有登錄組件的首頁,在沒有重啟APP的情況下,所有的tab頁面是不會被銷毀的,在此情況下登錄,所有放在頁面作用域下的變量都是不會更新的。
使用 reLaunch 到登錄頁面可以避免這個問題