轉自:https://www.jianshu.com/p/72b704b5c9ed
1、認識ionic的生命周期鈎子
截止ionic3.8.0版本,框架提供了8個鈎子函數,它們分別會在頁面生命周期的各個階段被觸發。
1.1 ionViewDidLoad
頁面加載完成觸發,這里的“加載完成”指的是頁面所需的資源已經加載完成,但還沒進入這個頁面的狀態(用戶看到的還是上一個頁面)。
需要注意的是它是一個很驕傲的鈎子,全程只會調用一次,即第一次進入頁面時被調用,此后你無論怎樣進進出出它都不再理你了。
因此,這個鈎子適合你做一些一次性的處理,比如從服務器拉取用戶數據存到緩存中。
1.2 ionViewWillEnter
字面意義理解就是“我要進來了”的那一刻,這個時候頁面剛剛開始切換。你可以在這時對頁面的數據進行預處理,這個鈎子是每次都會調用的。
1.3 ionViewDidEnter
當這個鈎子被觸發的時候,用戶已經進入到新頁面了(頁面處於激活狀態),同樣也是每次都會調用。
1.4 ionViewWillLeave
頁面准備離開時觸發,這時用戶剛剛觸發了返回按鈕或者相關的事件。
1.5 ionViewDidLeave
頁面已經(has finished)離開時觸發,頁面處於非激活狀態了。
1.6 ionViewWillUnload
頁面中的資源即將被銷毀時觸發,會在每次離開頁面后觸發
1.7 實驗
實驗得出以下結論:
1、構造函數在ionViewDidLoad之前被觸發
2、ionViewDidLoad只在第一次進入頁面時觸發
3、ionViewWillUnload會在每次離開頁面后觸發
2.還有兩個守衛鈎子
我開頭提到ionic提供了8個鈎子,而我只介紹了6個。前6個鈎子有個共性,它們的返回值都是void,即在相應時刻調用,不會返回任何的信息。
而另外兩個鈎子有些不太一樣,它們是可以返回布爾值的ionViewCanEnter和ionViewCanLeave。
如果前6個鈎子是頁面對用戶來訪的一種被動反應,那么現在,頁面具有了意識,可以准許你來或者准許你走。
這兩個鈎子,更多扮演着權限控制的角色,最近有個很新潮的術語叫守衛。
如果 ionViewCanEnter和ionViewCanLeave返回了false,就會被阻攔。
