此篇教程會(huì)持續(xù)更新。奶镶。迟赃。
官方文檔:https://reactnavigation.org/docs/navigation-lifecycle
react-native版本:0.57.0
react-navigation版本:2.x
模擬器:iPhone X ios 12.1
真機(jī):華為 mate9 Pro
IOS:Xcode 10.1
Android:Android studio 3.2
開(kāi)發(fā)系統(tǒng):macOS Mojave 10.14
場(chǎng)景假設(shè)
寫(xiě)兩個(gè)頁(yè)面(HomeScreen,DetailScreen)厂镇,我們從HomeScreen頁(yè)面跳轉(zhuǎn)到DetailScreen纤壁;當(dāng)處于HomeScreen頁(yè)面時(shí),這個(gè)頁(yè)面的裝載函數(shù)會(huì)被調(diào)用(constructor剪撬、componentWillMount等等)摄乒,我在這個(gè)頁(yè)面里面有一個(gè)按鈕,通過(guò)這個(gè)按鈕跳轉(zhuǎn)到DetailScreen頁(yè)面残黑,這個(gè)時(shí)候馍佑,DetailScreen頁(yè)面的裝載函數(shù)也會(huì)被調(diào)用,跟HomeScreen頁(yè)面的相關(guān)函數(shù)都沒(méi)有被調(diào)用梨水,然后我通過(guò)返回鍵返回到上一個(gè)頁(yè)面(HomeScreen)時(shí)拭荤,DetailScreen頁(yè)面會(huì)被銷毀,也就是DetailScreen頁(yè)面的componentWillUnMount函數(shù)被調(diào)用疫诽,當(dāng)返回到HomeScreen頁(yè)面時(shí)舅世,HomeScreen這個(gè)頁(yè)面的所有的裝載函數(shù)都不會(huì)調(diào)用,也就是說(shuō)此時(shí)展示的頁(yè)面是上一次渲染的結(jié)果奇徒,并沒(méi)有重新渲染雏亚。如果想在返回的時(shí)候渲染HomeScreen頁(yè)面,那么使用Navigation prop reference之a(chǎn)ddListener摩钙。
總結(jié)
HomeScreen(運(yùn)行時(shí))頁(yè)面的裝載函數(shù)被調(diào)用罢低,切換到DetailScreen頁(yè)面以后;
DetailScreen(運(yùn)行時(shí))頁(yè)面的裝載函數(shù)被調(diào)用胖笛,與HomeScreen頁(yè)面相關(guān)的函數(shù)并沒(méi)有被調(diào)用网持,返回到HomeScreen頁(yè)面以后;
HomeScreen(運(yùn)行時(shí))頁(yè)面并沒(méi)有執(zhí)行任何相關(guān)函數(shù)长踊,HomeScreen頁(yè)面保存的是上一次渲染的狀態(tài)功舀,DetailScreen已經(jīng)被釋放了。